利用loadrunner接口测试
接口地址:http://apistore.baidu.com/apiworks/servicedetail/697.html?qq-pf-to=pcqq.group
- /*脚本说明:
- 脚本名称:
- 业务功能:
- 交易路径:脚本从哪个模块到哪个模块
- 开发协议:
- 开发时间:
- 作者:
- 参数化说明:
- 修改记录:
- 修改时间:
- 修改人:
- 修改内容:
- */
- Action()
- { //添加头文件标识
- web_add_header ("apikey","a0736354b1d69377716d5f891b2deb93"); //参数位置是header
- lr_start_transaction ("车票查询");
- //获取响应报文,放进s_respond中
- web_reg_save_param ("S_respond","LB=","RB=",LAST);
- //添加检查点
- web_reg_find ("Text=\"ret\":true,",LAST);
- //发送报文
- /*web_url("www.abc.com",
- "URL=http://apis.baidu.com/qunar/qunar_train_service/traindetail?&&version=1.0&&train=G101&&from=%E5%8C%97%E4%BA%AC%E5%8D%97&&to=E4%B8%8A%E6%B5%B7%E8%99%B9%E6%A1%A5&&date=2016-07-30",
- "TargetFrame=",
- "Resource=0",
- "RecContentType=text/HTML",
- "Snapshot=t1.inf",
- "Mode=HTML",
- LAST ); //以HTML方式传送*/
- //发送报文
- web_submit_data("select",
- "Action=http://apis.baidu.com/qunar/qunar_train_service/traindetail",
- "Method=get",
- "TargetFrame=",
- "RecContentType=text/Json", //请求内容是json格式
- "Snapshot=t7.inf",
- "Mode=HTML", //发送方式是HTML
- ITEMDATA, //参数位置urlparam
- "Name=version", "Value=1.0", ENDITEM,
- "Name=train", "Value=G101", ENDITEM,
- "Name=from", "Value=%E5%8C%97%E4%BA%AC%E5%8D%97", ENDITEM, //请求格式也是json,传输参数也是json格式,与上面一样
- "Name=to", "Value=%E4%B8%8A%E6%B5%B7%E8%99%B9%E6%A1%A5", ENDITEM, //传输参数也是json格式
- "Name=date", "Value=2016-07-30", ENDITEM,
- LAST );
- //web_find ("Text=\"ret\":true",LAST);
- //对响应报文进行转码
- lr_convert_string_encoding ( lr_eval_string ("{S_respond}"),LR_ENC_UTF8 ,NULL,"zhuanma");
- //打印转码后的响应报文
- lr_output_message ( "%s",lr_eval_string ("{zhuanma}"));
- lr_end_transaction ("车票查询",LR_AUTO);
- return 0;
- }
根据API接口文档资料,
注意的是:参数位置,URL\header;请求方式,GET\POST;参数传输类型,JSON\HTML
函数说明:
1.web_reg_save_param ("S_respond","LB=","RB=",LAST); //打印响应报文,把响应报文保存在第一个参数"S_respond",显示出来;
2.web_add_header ("apikey","a0736354b1d69377716d5f891b2deb93");//参数位置是header,就用这个函数;
3.请求成功后对脚本进行检查,添加检查点:
web_reg_find ("Text=\"ret\":true",LAST);
//检查点,检查点必须是唯一值,有双引号”的,需要进行转译,如:\”\”(在每个双引号左边加一个斜杠直到所有参数变为蓝色就行)
4.说明:
%_reg_% 这个是注册函数,注册函数在回放日志中都是先有一个注册成功,下面才是该内容,例如检查函数:(Action.c(7): Registering web_reg_find was successful [MsgId: MMSG-26390] 回放日志内这个显示注册成功)、
(Action.c(24): Registered web_reg_find successful for "Text="ret":true," (count=1) [MsgId: MMSG-26364])上面显示注册成功后这里就显示结果。
5.web_find();是检查性的函数,不是注册函数,直接放在请求函数web_submit_data();web_url();等后面就可以,但是一般都是使用注册函数;
6.lr_convert_string_encoding (lr_eval_string("{S_respond}"),LR_ENC_UTF8,NULL,"zhuanma");
//转换字符类型,把中文字符串转为NULL,不知道具体的类型就用NULL,它就会转为默认的类型;
7.lr_output_message ("%s",lr_eval_string ("{zhuanma}"));
//转换后就要用这个函数输出到LR窗口,lr_eval_string("{}")函数主要是返回脚本中的一个参数当前的值。
8.lr_convert_string_encoding() 转换字符类型的函数;
9.lr_eval_string(“{}”) 返回脚本中的一个参数当前的值
对于自定义的变量,如果直接赋值,就直接使用变量名称;如果使用了web_reg_save_param,就使用 lr_eval_string("{rtn}")
10.lr_output_message( const char *format, exp1, exp2,...expn.);
11.lr_output_message( “%s”, “字符串”); 发送信息到输出窗口或日志文件
脚本说明:具体看脚本事例!
"RecContentType=text/Json", //请求内容是json格式
"Mode=HTML", //发送页面信息是HTML
添加事务处理:
lr_start_transaction ("车票查询");
lr_end_transaction ("车票查询",LR_AUTO);
用关联做检查点:
1.先添加关联,
//{"ret":true,"data"
web_reg_save_param ("S_respond","LB={\"ret\":","RB=,\"data\"",LAST);
2.添加if判断,字符串的匹配函数,stricmp()比较函数、strstr()字符串匹配,
if (strstr(lr_eval_string ("{S_respond}"),"ture")==NULL) {
lr_end_transaction ("车站搜索接口",LR_FAIL);
}else{
lr_end_transaction ("车站搜索接口",LR_PASS);
}
说明:
1.不是所有的接口都能用一个函数,这个不行的就换一个函数;
2.返回结果是4开头那么就是请求发不对造成的,添加检查点是对下面请求报文进行检查,下面的日志中检查点的内容必须唯一;
Post请求:
web_custom_request("unifiedOrder.exe",
"URL=http://222.222.120.75:808/webCash-core/webCash/pay/unifiedOrder",
"Method=POST", //post请求方法
"RecContentType=application/json", //请求头,数据交互方式json
"TargetFrame=",
"Body={S_body}", //body里面直接放json串
LAST );
body里面直接放json串或者把抓包放进去,参数中的引号"前需要加斜杠\转译”如:
http header设置:
Content-Type:application/json,请求头,数据交互协议json
Accept:application/json; //accept指返回的响应报文,客户端或浏览器可以处理的请求类型有哪些。