接口地址: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指返回的响应报文,客户端或浏览器可以处理的请求类型有哪些。
jmeter post接口测试body写法:
jmeter中有些接口需要前一个接口的结果做参数,就要写关联用到正则表达式。
接口测试是为了看接口调用的正不正确,响应报文算是一种方式,接口可以写断言,用断言结果和实际结果对比。下面是断言截图:(jmeter中断言和lr中检查点是一个意思吧!)