场景1: 当存在数组变量需要替换到入参中, 数组个数过大如几十上百个时, 可以通过程序替换好后贴进去:
1, 将要处理参数化的请求body贴入文件ss中放到src/main/resources目录下,
2, 使用正则匹配到到替换的值, 如下代码时要替换body中PGGradePlan2ProviderRecordGUID字段的value值, 那么就把起value通过正则表达式写好,括号括起来,分组;
3, 通过正则匹配获取所有符合条件的value的值, 存入到list中
4, 再用list中的值,逐一查询替换body中相同的所有值为目标变量名
String str = "";
try {
str = new String(Files.readAllBytes(Paths.get("src/main/resources/ss")));
} catch (Exception e) {
e.printStackTrace();
}
String s = "PGGradePlan2ProviderRecordGUID\\\\\",\\\\\"changed\\\\\":true,\\\\\"value\\\\\":\\\\\"([a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12})\\\\\"";
Pattern pattern = Pattern.compile(s);
Matcher matcher = pattern.matcher(str);
List<String> list = new ArrayList<>();
while (matcher.find()) {
String value = matcher.group(1);
list.add(value);
}
System.out.println(list);
System.out.println(list.size());
for (int i = 1; i <= list.size(); i++) {
str = str.replace(list.get(i-1), "{PGGradePlan2ProviderRecordGUIDs_" + i + "}");
}
//System.out.println(str);
try {
Files.write(Paths.get("src/main/resources/ss2.txt"), str.getBytes());
} catch (IOException e) {
throw new RuntimeException(e);
}
场景2:参数拼接, 每次要取10行数据, 将10行数据中的某一字段拼接到入参中
//1, 放在init中
char * aa; //用于临时存储格式化1好的guid
char * straa; //用于存储拼接好的guid字符串1
char * ProviderGUIDs; //存储最终的guid字符串1,给lr
//2, 放在对应的action中
int i;
if ((aa = (char *)calloc(2048, sizeof(char))) == NULL) {
lr_output_message ("Insufficient memory available");
return -1;
}
if ((straa = (char *)calloc(2048, sizeof(char))) == NULL) {
lr_output_message ("Insufficient memory available");
return -1;
}
if ((providerRecordGuids = (char *)calloc(2048, sizeof(char))) == NULL) {
lr_output_message ("Insufficient memory available");
return -1;
}
//不需要循环拼接的赋值一次
lr_save_string(lr_eval_string("{BUGUID}"),"buguid1");
//循环拼接供应商GUID
for (i=1;i<=9;i++) {
//取值将{ProviderGUID}取出,赋值给ProviderGUID1
lr_save_string(lr_eval_string("{ProviderGUID}"),"ProviderGUID1");
sprintf(aa,"\"%s\",",lr_eval_string("{ProviderGUID1}"));
//拼接字符串
strcat(straa,aa);
}
//结尾没有,号;所以结尾的要单独拼接格式;
lr_save_string(lr_eval_string("{ProviderGUID}"),"ProviderGUID1");
sprintf(aa,"\"%s\"",lr_eval_string("{ProviderGUID1}"));
strcat(straa,aa);
//将拼接好的字符串变量,赋值给lr变量ProviderGUIDs6
lr_save_string(straa,"ProviderGUIDs");
//变量使用{ProviderGUIDs}
(错误1)再设置:
(错误2)并发执行一直有问题, 每次第一个迭代都是好的, 后面的迭代拼接的数据guid都是重复的10个guid, 后来把, 设置改成这样就好了:理论上这么改没什么意义,但就是好了
(正确)还是有问题, 3个迭代, 后面的两个迭代重复第一个迭代的数据, 因为分区数量设置不对, 分区数量应该是: 一次使用用例使用数*迭代数: 一次选10个, 有3个迭代所以填30.