1,返回值的中文乱码,查看时需要做转换。
代码:
//取出返回值,放在res2中。deptname返回值是中文乱码
web_reg_save_param("res2",
"LB=deptName\":\"",
"RB=\",",
"Search=Body",
LAST);
//请求
//将返回消息res2值做编码转换。
lr_convert_string_encoding(lr_eval_string("{res2}"),"utf-8",NULL,"msg");
//打印转换后的值。
lr_output_message("转换编码后msg----%s",lr_eval_string("{msg}"));
//比较两个字符串是否一致。
if(strcmp(lr_eval_string("{msg}"),"注册成功")==0){
}
2,打印返回值的所有内容,包括head 和 body 内容。
web_set_max_html_param_len("262144"); // 默认最大长度为256
web_reg_save_param("ResponseBody", "LB=", "RB=", "Search=Body", LAST);
//请求
//字符转码
lr_convert_string_encoding(lr_eval_string("{ResponseBody}"),LR_ENC_UTF8 ,LR_ENC_SYSTEM_LOCALE,"ResponseBodyUTF8");
//输出信息
lr_output_message("# 响应内容体:\n %s", lr_eval_string("{ResponseBodyUTF8}"));
3,运行场景中查看日志:根据调整日志级别查看每个运行的用户的日志。
4,多个关联。
现在action 上面,定义变量。
取出多个关联:
代码:
int src_count = 0;
int i = 1;
char str[50];
//Action(){
//多个关联,ORD=1,则表示取一个值; ORD=ALL表示取所有关联值。
web_reg_save_param("res2",
"LB=deptName\":\"",
"RB=\",",
"Search=Body",
"Ord=All",
LAST);
//请求
//获取关联到的总个数
src_count = atoi(lr_eval_string("{res2_count}"));
lr_output_message("包含的返回值数量:%d",src_count);
//循环输出关联到的所有值
for(;i<=src_count;i++){
sprintf(str,"{res2_%d}",i);
lr_convert_string_encoding(lr_eval_string(str),"utf-8",NULL,"msg");
lr_output_message("返回值为:%s",lr_eval_string("{msg}"));
}
//取第一个参数值
lr_output_message("第一个参数值:%s",lr_paramarr_idx("res2",1));
//随机取一个参数值
lr_output_message("随机一个参数值:%s",lr_paramarr_random("res2"));
//参数总数
lr_output_message("参数总数:%d",lr_paramarr_len("res2"));
5,打印日志:
lr_output_message("代销入库单:%s", lr_eval_string("{depotCode_DaiXiaoRuKuDan}"));
6,赋值功能--string
//lr_save_string( const char *param_value, const char *param_name) 将param_value字符串值,赋值给param_name参数名。
// 赋值完成后lr可以直接通过{param_name}获取param_name的值。
//把存在数组中的值取出来放在一个参数中,供后面使用。depotCode depotId
lr_save_string(depotCode_DaiXiaoRuKuDan_array[0],"depotCode_1");
//loadrunner中直接用赋的值:
lr_output_message("depotCode的值 为%s",lr_eval_string("{depotCode_1}"));
6.1赋值功能--int
//lr_save_int将int类型保存到参数中。
lr_save_int(i,"izhi");
//loadrunner中对命名的参数值izhi ,可以直接通过{izhi} 获取。
lr_output_message("i的值:%s",lr_eval_string("{izhi}"));
7,关联--取十条返回值:
//这种方法是通过查询返回值,取返回值的最上面十条数据,进行评审。
//如果是多用户并发时,可能会有资源挣用问题。
//所以如果是多用户并发时,最好是在新增保存后,将返回的code和id保存在一个数组中,供下面的审核使用。
//depotCode":"DRK100101201902000033","reqCompName
web_reg_save_param("depotCode",
"LB=depotCode\":\"",
"RB=\",\"reqCompName",
"Ord=ALL",
"SaveLen=21",
LAST);
//得到返回值后,就可以下面使用了
lr_output_message("depotCode的值 为%s",lr_eval_string("{depotCode_1}"));
8,检查点:
web_reg_find("Text=code\":0,\"message",
"Fail=NotFound",
"Search=Body",
LAST);
9,判断返回结果是否包含某值:
用法: strstr(str1,str2) 得到 字符串str2 在str1 中的索引, 成功则返回一个 int,失败返回null,通常用于判断str1 是否包含str2
//循环变量
int j,count=0;
Action(){
//判断返回值 s 中是否包含AAA26.
while(strstr(s,"AAA26") != NULL){
count++;
s=(char *)(strstr(s,"AAA26")+1);
lr_output_message("结果为%s",s);
}
lr_output_message(",出现 %d 次",count);
//如果返回结果中含有AAA26 , 则表示正确。
//结果为4002 , AAA26
if(count<2){
lr_end_transaction("s003", LR_FAIL);
}else{
lr_end_transaction("s003", LR_AUTO);
}
6,关联函数:
web_reg_save_param 和 web_reg_save_param_ex 效率上的区别。 后者在并发时,消耗压力机内存和cpu ,所以慎重使用。
7,参数化:
最好放在一个file中 。以免并发时打开关闭文件取乱了。
8,时间获取
//保存0.5个小时后的时间到参数ab中
lr_save_datetime("%H:%M:%S",TIME_NOW+0.5*(ONE_HOUR),"ab");
//输入ab的值
lr_message("the time after two hour is:%s",lr_eval_string("{ab}"));
9,找关联的方法:
1),录制2 个一样的脚本。 (加上所有注释:“新增”、“保存”等)
2),回放一个脚本。 然后在页面上看,这个脚本走到什么位置失败的。(例如:是未提交状态,说明提交失败了)
3),则对比这2个脚本的提交功能,如果有不一样的值,如id 或是code之类的。说明需要关联。
4),去3中方法的上面,查看其它方法的返回值。直到找到id 或是code为止。
5),找到后需要确认该id或是code 是通过查询得到的还是通过保存得到的。 我们一般需要找通过保存后返回的id 做关联值。
10,
11,
12,