有时候参数文件中的数据不一定都能使用,这时候可以写一个函数将脚本调试过程中正确和错误数据分别放入到本地指定的文件中,正式运行的时候就只放入正确的可用的数据,
将这个函数放在vuser_init()的上方
<span style="font-size:14px;">SelectData(char *status) { long filedes_right; //保存正确账号文件句柄 long filedes_wrong; //保存错误账号文件句柄 char *filepath="C:\\test"; //filepath可以写事务名称 char filer[256]="\0"; char *file_right="right.txt"; char filew[256]="\0"; char *file_wrong="wrong.txt"; //获得正确数据的完整文件名 strcat(filer,filepath); strcat(filer,file_right); //获得异常数据的完整文件名 strcat(filew,filepath); strcat(filew,file_wrong); if(strcmp(status,"PASS")==0){ if((filedes_right = fopen(filer,"a+")) == NULL){ lr_error_message("文件打开失败!"); return 0; } lr_log_message("PASS status=%s",status); fprintf(filedes_right,"abcdefg"); //写入数据到文件中 fclose(filedes_right); //关闭文件句柄 }else if(strcmp(status,"FAIL")==0){ if((filedes_wrong = fopen(filew,"a+"))==NULL){ lr_error_message("文件打开失败!"); return 0; } lr_log_message("FAIL status=%s",status); fprintf(filedes_wrong,"hijklmn"); //写入数据到文件中 fclose(filedes_wrong); //关闭文件句柄 } }</span>
<span style="font-size:14px;">Action() { //事务成功则传PASS,事务失败则传FAIL参数给函数 // if(事务成功){ SelectData("PASS"); //}else{ //事务失败 SelectData("FAIL"); //} return 0; }</span>
为了提高筛选数据的效率,需要对参数化选项进行设置:
1、参数化选项,select next row选择unique,Update Value on选择Each iteration
2、假设总共有2W参数化数据,需要10VU并发筛选,则设置参数的块大小为2000,则在参数化设置最下面的 Allocate Vuser valies in the Controller中设置块大小为2000
3、在运行时设置中选择Pacing设置运行次数为2000
4、在Contraller加压方式(duration)中,设置直到脚本运行完毕(run until completion),不设置场景运行多少时间,这样10VU对2W数据逐个筛选后自动停止场景的运行。
也可是使用单用户来筛选数据,但耗时较长一些
每次在C盘生成的数据都要备份到一个文件夹中,以免被下一轮的筛选动作删除这些数据