Loadrunner测试json接口实例以及 web_custom_request 函数详解

1. loadrunner + json说明

使用lr测试json接口,向服务端发送json格式请求,接收处理返回响应数据。

主要用到函数:

  1)web_custom_request

  2)web_reg_save_param (此函数常用户处理动态参数,该方法在LoadRunner中被称为Correlation(关联))

2. web_custom_request 参数说明

Int web_custom_request (const char *RequestName, <List of Attributes>,[EXTRARES, <List of Resource Attributes>,] LAST );

返回值:
LR_PASS(0)代表成功
LR_FAIL(1)代表失败。

参数:

1、RequestName:步骤的名称,VuGen中树形视图中显示的名称。

2、List of Attribute:支持的属性有以下几种:

1)URL: 页面地址。
2)Method : 页面的提交方式,POST或GET。
3)EncType :编码类型。此参数给出一个内容类型(Content-Type),指定其做为回放脚本时“Content-Type”请求头的值,例如“text/html”。
4)BodyFilePath : 作为请求体传送的文件的路径。
5)UserAgent: 用户代理,它是一个HTTP头的名字,用来标识应用程序,通常是浏览器,它呈现的是用户和服务器的交互。
6)Binary:   “Binary=1”表示页面请求体中的每一个以file://x/##形式出现的值(在这里“##”代表2个十六进制数字),都会被替换为单字节的十六进制的值。
7)ContentEncoding: 指定请求体的使用指定的方式(gzip或者deflate)进行编码(例如,压缩),相应的“Content-Encoding:” HTTP头会和此请求一起发送。这个参数适用于web_custom_request和web_submit_data。
8)FtpAscii: “1”使用ASCII模式处理FTP操作;"0" 使用二进制模式。
9)TargetFrame: 当前链接或资源所在Frame的名称。除了Frame的名字,还可以指定下面的参数:
_BLANK:打开一个空窗口。
_PARENT:把最新更改过的的Frame替换为它的上级。
_SELF:替换最新更改过的的Frame。
_TOP:替换整个页面。
10)RecContentType:    录制脚本时响应头的内容类型。例如text/html、 application/x- JavaScript 等。当没有设置Resource属性时,用它来确定目标URL是否是可记录的资源。此属性包含主要的和次要的资源。最频繁使用的类型是 text、application、image。次要的类型根据资源不同变化很多。例如:"RecContentType=text/html":表示html文本。"RecContentType=application/msword":表示当前使用的是Msword。
11)Referer:   当前页面关联的页面。如果已经显式指定了url的地址,此项可以省略。
12)Resource:   指示URL是否属于资源。1 是;0 不是。设置了这个参数后,RecContentType参数被忽略。
13)ResourceByteLimit:  web页面下载资源的极限大小。
14)Snapshot:    快照的文件名。
15)Mode:  两种录制级别HTML、HTTP。HTML级别--在当前Web界面上录制直观的HTML动作。以一步步的web_url、web_link、web_image、web_submit_form来录制这些动作。
16)ExtraResBaseDir: 根URL,放在EXTRARES组里。

17)Body: 请求体。不同的应用中,请求体分别通过Body、BodyBinary或者BodyUnicode参数来传递。请求体可以只使用其中一个参数,也可以使用一连串的分开的参数组成多请求体。注意:如果请求体大于100K,会使用一个变量来代替Body参数。变量是在 lrw_custom_body.h中定义的。

18)Raw Body: 请求体是作为指针传递的,此指针指向一串数据。

3、EXTRARES:表明下面的参数将会是List Of Resource Attributes了。

4、LAST :结尾的标示符。

5、List of Resource Attributes

仅仅当Recording Options--Recording --HTML-based script-- Record within the current script step选项被选中时,List of Resource Attributes才会被插入到代码中。Web页面中的非HTML机制产生了资源列表,包含了Javascript, ActiveX, Java applets and Flash所请求的资源。VuGen's 的Recording 选项中,可以设置把这些资源录制在当前的操作中(默认是此设置)还是作为单独的步骤来录制。

3. 具体实例如下(包含发送json,获取响应数据,设置关联、设置检查点):

1/* 2 定义事务: 3 1)用户注册 4 2)用户登录 5 3)用户签到 6 接口为:application/json 7 思路: 8 1)app注册,获到mobile 9 2)使用获取到的mobile登录,获取tokenid和userid。 10 11 参数化:手机号码、设备号 12 */ 13 14Action() 15{ 16 //定义接口url 17 char *Interface_Url; 18 lr_save_string("http://192.168.0.1:8080/action.a","Interface_Url"); 19 20 //注册事务开始 21 lr_start_transaction("用户注册"); 22 lr_rendezvous("register"); 23 24 //检查用户是否注册成功 25 web_reg_find("Search=Body", 26 "Text=createTime", 27 "SaveCount=createTime", 28 LAST); 29 30 //web_set_max_html_param_len("10000000"); 31 32 //获取用户注册后响应数据,并传给mobile 33 web_reg_save_param("mobile", 34 "LB=\"mobile\":\"",        //设置左边界 35 "RB=\",",              //设置右边界 36 "Ord=1",                37 "Notfound=empty",          38 "Search=Body", 39 LAST); 40 41 web_custom_request("register", 42 "Url={Interface_Url}",      //设置url 43 "Method=POST",           //设置方法,post或get 44 "Mode=HTTP",   45 "EncType=application/json",    //编码类型 46 "RecContentType=application/json", 47 "Body={\"c\":\"1001\",\"p\":{\"code\":\"9051\",\"mobile\":\"{phone}\",\"pwd\":\"123456\",\"model\":\"{model}\",}}",        //请求主体,json格式,分号前需要加斜杠 48 LAST); 49 50 lr_vuser_status_message("注册事务,虚拟用户数 #%s",lr_eval_string("{phone}")); 51 lr_end_transaction("用户注册",LR_AUTO); 52 53 //登录事务开始 54 lr_start_transaction("用户登录"); 55 lr_rendezvous("login"); 56 57 web_reg_find("Search=Body", 58 "Text=lastLoginTime", 59 "SaveCount=lastLoginTime", 60 LAST); 61 //获取用户登录后响应数据tokenId,并传给pdl_dynamic_tokenId 62 web_reg_save_param("pdl_dynamic_tokenId", 63 "LB=\"tokenId\":\"", 64 "RB=\"", 65 "Ord=1", 66 "Notfound=empty", 67 "Search=Body", 68 LAST); 69 //从用户登录响应数据中,获取pdl_user_id 70 web_reg_save_param("pdl_user_id", 71 "NotFound=warning", 72 "LB=\"id\":", 73 "RB=,\"inviteCode", 74 "Ord=1", 75 "Search=Body", 76 LAST); 77 web_custom_request("login", 78 "Url={Interface_Url}", 79 "Method=POST", 80 "Mode=HTTP", 81 "EncType=application/json", 82 "RecContentType=application/json", 83 "Body={\"c\":\"1002\",\"p\":{\"mobile\":\"{pdl_mobile}\",\"pwd\":\"123456\"}}", 84 LAST); 85 lr_end_transaction("用户登录",LR_AUTO); 86 87  //用户签到 88 lr_start_transaction("用户签到"); 89 lr_rendezvous("Sign_in"); 90 91 web_reg_find("Search=Body", 92 "Text=signDate", 93 "SaveCount=signDate", 94 LAST); 95  web_custom_request("pdl_Sign_in", 96 "Url={Interface_Url}", 97 "Method=POST", 98 "Mode=HTTP", 99 "EncType=application/json", 100 "RecContentType=application/json", 101 "Body={\"c\":\"1014\",\"p\":{\"userId\":\"{pdl_user_id}\",\"tokenId\":\"{pdl_dynamic_tokenId}\"}}", 102 LAST); 103 lr_end_transaction("用户签到",LR_AUTO); 104 105 return 0; 106}

整合链接:

http://www.cnblogs.com/smstars/p/5098663.html

http://blog.csdn.net/dongmu1986/article/details/24380941

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

mysql设置时区

mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0

Loadrunner测试json接口实例以及 web_custom_request 函数详解 - HelloWorld