zoukankan      html  css  js  c++  java
  • LoadRunner11脚本小技能之添加请求头+定义变量+响应内容乱码转换打印+事务拆分

    一、添加请求头

    存在一些接口,发送请求时需要进行权限验证、登录验证(不加请求头时运行脚本,接口可能会报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、无关的关联需删除,会消耗资源和性能;

  • 相关阅读:
    Win10 注册IIs4.0的解决方案
    Win10 注册IIs4.0的解决方案
    Methods for Using Message Queuing Telemetry Transport for Sensor Networks to Support Sleeping Devices
    Win10 注册IIs4.0的解决方案
    真正聪明的人,为什么从不去社交?
    真正聪明的人,为什么从不去社交?
    真正聪明的人,为什么从不去社交?
    真正聪明的人,为什么从不去社交?
    真正聪明的人,为什么从不去社交?
    真正聪明的人,为什么从不去社交?
  • 原文地址:https://www.cnblogs.com/dnjiang/p/12532737.html
Copyright © 2011-2022 走看看