LoadRunner总结(3)-LoadRunner发送get和post请求

测试过程中常会遇到需要用LoadRunner做接口测试的情况,下面数据包抓取用的工具为wireshark,用其他抓包工具如fiddler都是可以的。

一、 get请求的模拟

先看一个get数据包。

LoadRunner总结(3)-LoadRunner发送get和post请求_第1张图片

在LoadRunner里面要模拟这样一个数据包可以使用web_custom_request()函数,按照上面的数据包中填入URL以及部分请求头信息。为了在测试中方便判断,因此调试脚本时会加入一些打印和判断函数,完整脚本如下。

Action()

{

    int nHttpRetCode; 

    web_set_max_html_param_len("44662");  

    web_reg_save_param("ResponseBody", "LB=", "RB=", "Search=Body", LAST); 

    web_save_header(RESPONSE,"ResponseHeader"); 

    lr_start_transaction("get_test"); 

    web_custom_request("get_test", 

                       "URL=http://www.example.com/",  

                       "Method=GET", 

                       "Resource=0", 

                       "Referer=",   

                       "Mode=HTTP", 

                       "EncType=text/html;charset=UTF-8", 

                       "Body=", 

                        LAST); 

lr_end_transaction("get_test", LR_PASS); 

        

    //打印返回信息 

    lr_output_message("# 响应头信息:\n %s", lr_eval_string("{ResponseHeader}"));

//lr_output_message("# 响应原始内容体:\n %s", lr_eval_string("{ResponseBody}")); 

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}")); 

        //获取服务器http响应码 

    nHttpRetCode = web_get_int_property(HTTP_INFO_RETURN_CODE);   

    if(nHttpRetCode == 200) 

    {  lr_output_message("Success!");   } 

    else 

    {  lr_output_message("Failed! ");    } 

              return 0;

}

脚本说明:

1、get请求需注意缓存问题。

LoadRunner的缓存默认是256,但是看到响应头中content-length数据长达44662,这样,就需要使用函数“web_set_max_html_param_len("44662");” 修改缓存区大小.

2、服务器响应头和响应体的获取

web_reg_save_param()函数将消息体存入ResponseBody这个参数中,设置查找范围为消息体、左右查找边界为空则可以获取整个响应体的内容;

lr_eval_string()将参数值转换成字符串。

web_save_header()函数可以获取LoadRunner的两个内置变量值:REQUEST(用于提取完整的请求头)、RESPONSE(用于提取完整的响应头信息)。

这里“web_save_header(RESPONSE,"ResponseHeader");”用于获取响应头的信息。

这样后续脚本中{ResponseHeader}变量和{ResponseBody}就是响应头和响应体。

3、判断请求是否成功

获取HTTP响应码,如果为200表示成功,其他都判断为失败。HTTP_INFO_RETURN_CODE变量在请求后使用,返回的是http响应码。


二、post方法

post方法的请求的内容可能是一般的参数和值,这样的请求使用web_submit_data即可。

例如post一个名为的body参数,值为”test”的脚本如下

Action()

{  web_submit_data("userlogin.aspx_2",

            "Action=http://172.17.30.134/bater/appcontrail",

            "Method=POST",

            "RecContentType=text/html",

            "Referer=",                   

            "Mode=HTML",

            ITEMDATA,

            "Name=body", "Value=test", ENDITEM,

            LAST);   

   return 0;

}

在部分情况下还可能需要post 一组json数据,可以使用

Action()

{web_custom_request("json_try",

"URL=http://172.17.30.134/bater/appcontrail ",

"Method=POST",

"Resource=0",

"RecContentType=application/json",

"Referer=",

"Mode=HTTP",

"EncType=application/json",

"Body={\"body\":{\"uid\":\"00011122 \"}}",

LAST);

return 0;

}

Json数据中的双引号前要加转义,json数据的编码方式为application/json。

你可能感兴趣的:(【LoadRunner】)