测试过程中常会遇到需要用LoadRunner做接口测试的情况,下面数据包抓取用的工具为wireshark,用其他抓包工具如fiddler都是可以的。
一、 get请求的模拟
先看一个get数据包。
|
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进行GET和POST请求的接口测试,包括调整缓存大小、捕获响应头及响应体、判断HTTP状态码等关键步骤。
3999

被折叠的 条评论
为什么被折叠?



