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,