一、添加请求头
存在一些接口,发送请求时需要进行权限验证、登录验证(不加请求头时运行脚本,接口可能会报401等等),所以需要在脚本中给对应请求添加请求头。注意:请求头需在请求前添加,包含url类、submit类请求。
char *a="038f4201048a6319b4d2f538b2dd54d8"; lr_save_string( a,"b" ); lr_output_message(lr_eval_string("{b}")); web_add_header("access-token","{b}"); web_add_header("loginaware","true");
二、定义变量
上面提到添加请求头的问题,例如系统部署时配置需要经过网关做权限认证,才能正常登录访问系统,所以每个接口请求都需要添加请求头!如上图中,包含了access-token,这个token存在有效期,超过30分钟就会失效;当token失效时,运行脚本前就得拿新的token值替换掉脚本中失效的token,手动一个个替换的话很费时;这里可以通过定义变量进行引用解决!
如图,在脚本中各事务前定义变量a,并将字符串a赋值给b,并在后续的脚本的请求头中引用b的值;通过定义变量,后续当token失效时,只需替换变量a中的值即可。
1 char *a="1b284eb3ec923775528440a631af5868"; #定义变量a 2 lr_save_string( a,"b" ); #使用lr_save_string()将以""结束的字符串(a)保存到参数b中 3 lr_output_message(lr_eval_string("{b}")); #lr_eval_string() 所有出现参数b的地方用它的当前值来代替;lr_output_message() 打印函数,打印b的值
三、响应内容乱码转换为中文
前几篇文章有提到过LoadRunner11接口响应内容乱码的问题,当插入检查点时,在日志中就无法判断检查结果是否符合预期结果。因此可以将查找的乱码内容转换为中文并打印,可在日志中直接看到真实结果。
文本检查点技巧相关知识请查阅另一篇博文,此处不过多描述,仅提供乱码内容转换为中文的代码:
1 //将查找目标转为utf8编码,放在变量test_find中 2 lr_convert_string_encoding( "鍒樻絿娼", 3 LR_ENC_UTF8, 4 LR_ENC_SYSTEM_LOCALE, 5 "text_find" ); 6 7 //将test_find内容变为string,存在变量find中 8 lr_save_string( lr_eval_string("{text_find}"),"find" ); 9 10 //打印变量find的值 11 lr_output_message("检查点乱码内容转译 = %s", lr_eval_string("{find}"));
实际运行结果:
四、事务拆分
有时录制脚本,一个事务可能会出现在它的重定向页面中,脚本中没能体现,如下图,一个html页面包含了很多个接口:
为了查看该页面的每一个接口的具体响应时间,需要将页面下的每一个接口进行拆分,具体代码如下:
web_custom_request("query.v", "URL=http://ip+端口/请求URL", "Method=GET", "Resource=0", "Referer=", "Snapshot=t1.inf", "Mode=HTTP", "EncType=text/html;charset=UTF-8", "Body=", LAST);
五、备注
1、定义的变量的是全局的,只需要定义一个即可;
2、 output_message调试脚本时才使用,压测时需注释;
3、init-action-end场景运用。action才加事务;
4、每个场景脚本,均需要有退出,否则有可能出现某些用户无法再测登录的情况;
5、无关的关联需删除,会消耗资源和性能;