如何在LoadRunner中更新现有CSV文件的指定列数据后执行上传
LoadRunner多迭代上传唯一CSV文件实现方案
实现逻辑
每次迭代启动时,动态生成带唯一ID的CSV临时文件,再调用上传接口传递该临时文件,从根源避免内容重复导致的报错。
具体操作步骤
1. 动态生成唯一ID与临时CSV文件
将以下代码放在Action模块的最开头,每次迭代执行上传操作前先运行这段逻辑:
long file_handler; char csv_path[256]; int base_id, row1_id, row2_id; // 生成唯一ID基准:组合虚拟用户ID+迭代号,单/多用户场景都不会重复 base_id = lr_whoami(VUSER_ID) * 1000 + atoi(lr_eval_string("{Iteration}")) * 10; row1_id = base_id + 1; row2_id = base_id + 2; // 定义临时CSV存储路径,也可以每次迭代生成不同文件名 sprintf(csv_path, "C:\\loadrunner_temp\\upload_data.csv"); // 写入CSV内容 if((file_handler = fopen(csv_path, "w")) == NULL) { lr_error_message("临时CSV文件创建失败,路径:%s", csv_path); return -1; } fprintf(file_handler, "ID,Name,Department\n"); fprintf(file_handler, "%d,Mohd Sarfraz,CS\n", row1_id); fprintf(file_handler, "%d,Mohd Sarfraz,CS\n", row2_id); fclose(file_handler); // 存储文件路径为参数,供上传接口调用 lr_save_string(csv_path, "upload_csv_path");
若CSV行数多、结构复杂,可提前准备占位符模板文件,逐行读取替换ID占位符后写入临时文件,逻辑与上述写入逻辑一致。
2. 修改上传请求的文件路径
找到脚本中文件上传的请求(通常为web_submit_data、web_custom_request函数),将原固定CSV路径替换为上述生成的参数{upload_csv_path},示例如下:
web_submit_data("csv_upload", "Action=https://你的测试接口地址/upload", "Method=POST", "EncType=multipart/form-data", ITEMDATA, "Name=file", "Value={upload_csv_path}", "File=Yes", ENDITEM, LAST);
3. 可选优化
迭代结束后添加删除临时文件的逻辑,避免本地生成过多冗余文件:
remove(lr_eval_string("{upload_csv_path}"));
如果你的脚本没有内置的迭代号参数,可以自定义一个全局变量,每次迭代结束后自增1即可替代上述的{Iteration}参数。
内容的提问来源于stack exchange,提问作者Mohd Sarfraz
相关产品推荐
相关产品推荐

