利用loadrunner接口测试

  1. /*脚本说明: 
  2. 脚本名称: 
  3. 业务功能: 
  4. 交易路径:脚本从哪个模块到哪个模块 
  5. 开发协议: 
  6. 开发时间: 
  7. 作者: 
  8. 参数化说明: 
  9. 修改记录: 
  10. 修改时间: 
  11. 修改人: 
  12. 修改内容: 
  13. */  
  14.   
  15. Action()  
  16. {   //添加头文件标识  
  17.     web_add_header ("apikey","a0736354b1d69377716d5f891b2deb93"); //参数位置是header  
  18. lr_start_transaction ("车票查询");  
  19.     //获取响应报文,放进s_respond中  
  20. web_reg_save_param ("S_respond","LB=","RB=",LAST);  
  21.     //添加检查点  
  22. web_reg_find ("Text=\"ret\":true,",LAST);  
  23. //发送报文  
  24.     /*web_url("www.abc.com",  
  25.     "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",  
  26.     "TargetFrame=",  
  27.     "Resource=0",  
  28.     "RecContentType=text/HTML",  
  29.     "Snapshot=t1.inf",  
  30.     "Mode=HTML", 
  31.     LAST ); //以HTML方式传送*/  
  32. //发送报文  
  33. web_submit_data("select",   
  34.     "Action=http://apis.baidu.com/qunar/qunar_train_service/traindetail",   
  35.     "Method=get",   
  36.     "TargetFrame=",   
  37.     "RecContentType=text/Json"//请求内容是json格式  
  38.     "Snapshot=t7.inf",   
  39.     "Mode=HTML"//发送方式是HTML  
  40.     ITEMDATA, //参数位置urlparam  
  41.     "Name=version""Value=1.0", ENDITEM,   
  42.     "Name=train""Value=G101", ENDITEM,   
  43.     "Name=from""Value=%E5%8C%97%E4%BA%AC%E5%8D%97", ENDITEM,  //请求格式也是json,传输参数也是json格式,与上面一样  
  44.     "Name=to""Value=%E4%B8%8A%E6%B5%B7%E8%99%B9%E6%A1%A5", ENDITEM,  //传输参数也是json格式  
  45.     "Name=date""Value=2016-07-30", ENDITEM,   
  46.     LAST );   
  47.     //web_find ("Text=\"ret\":true",LAST);  
  48.     //对响应报文进行转码  
  49.     lr_convert_string_encoding ( lr_eval_string ("{S_respond}"),LR_ENC_UTF8 ,NULL,"zhuanma");  
  50.     //打印转码后的响应报文  
  51. lr_output_message ( "%s",lr_eval_string ("{zhuanma}"));  
  52.     lr_end_transaction ("车票查询",LR_AUTO);  
  53. return 0;  
  54. }  

根据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中检查点是一个意思吧!)




版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/JOJOY_tester/article/details/53157897
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页