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

来源:互联网 发布:anaconda与python版本 编辑:程序博客网 时间:2024/05/21 17:02

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)用户签到          接口为:application/json    思路:        1)app注册,获到mobile        2)使用获取到的mobile登录,获取tokenid和userid。    参数化:手机号码、设备号    */Action(){    //定义接口url    char *Interface_Url;    lr_save_string("http://192.168.0.1:8080/action.a","Interface_Url");    //注册事务开始    lr_start_transaction("用户注册");      lr_rendezvous("register");    //检查用户是否注册成功    web_reg_find("Search=Body",                "Text=createTime",                 "SaveCount=createTime",                 LAST);    //web_set_max_html_param_len("10000000");     //获取用户注册后响应数据,并传给mobile    web_reg_save_param("mobile",                       "LB=\"mobile\":\"",        //设置左边界                       "RB=\",",              //设置右边界                       "Ord=1",                                      "Notfound=empty",                                "Search=Body",                         LAST);    web_custom_request("register",                       "Url={Interface_Url}",      //设置url                       "Method=POST",           //设置方法,post或get                       "Mode=HTTP",                         "EncType=application/json",    //编码类型                       "RecContentType=application/json",                       "Body={\"c\":\"1001\",\"p\":{\"code\":\"9051\",\"mobile\":\"{phone}\",\"pwd\":\"123456\",\"model\":\"{model}\",}}",        //请求主体,json格式,分号前需要加斜杠                       LAST);    lr_vuser_status_message("注册事务,虚拟用户数 #%s",lr_eval_string("{phone}"));    lr_end_transaction("用户注册",LR_AUTO);        //登录事务开始    lr_start_transaction("用户登录");      lr_rendezvous("login");        web_reg_find("Search=Body",                "Text=lastLoginTime",                 "SaveCount=lastLoginTime",                 LAST);    //获取用户登录后响应数据tokenId,并传给pdl_dynamic_tokenId    web_reg_save_param("pdl_dynamic_tokenId",                       "LB=\"tokenId\":\"",                       "RB=\"",                       "Ord=1",                       "Notfound=empty",                       "Search=Body",                       LAST);    //从用户登录响应数据中,获取pdl_user_id    web_reg_save_param("pdl_user_id",                       "NotFound=warning",                       "LB=\"id\":",                       "RB=,\"inviteCode",                       "Ord=1",                       "Search=Body",                       LAST);    web_custom_request("login",                       "Url={Interface_Url}",                       "Method=POST",                       "Mode=HTTP",                       "EncType=application/json",                       "RecContentType=application/json",                       "Body={\"c\":\"1002\",\"p\":{\"mobile\":\"{pdl_mobile}\",\"pwd\":\"123456\"}}",                       LAST);    lr_end_transaction("用户登录",LR_AUTO);   //用户签到    lr_start_transaction("用户签到");      lr_rendezvous("Sign_in");        web_reg_find("Search=Body",                "Text=signDate",                 "SaveCount=signDate",                 LAST);  web_custom_request("pdl_Sign_in",                       "Url={Interface_Url}",                       "Method=POST",                       "Mode=HTTP",                       "EncType=application/json",                       "RecContentType=application/json",                       "Body={\"c\":\"1014\",\"p\":{\"userId\":\"{pdl_user_id}\",\"tokenId\":\"{pdl_dynamic_tokenId}\"}}",                       LAST);    lr_end_transaction("用户签到",LR_AUTO);    return 0;}
整合链接:
http://www.cnblogs.com/smstars/p/5098663.html
http://blog.csdn.net/dongmu1986/article/details/24380941

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 一打电话4g变2g怎么办 手机4g突然变2g怎么办 江湖风云录八卦门任务拒绝了怎么办 百度网盘下载时显示违规信息怎么办 在海马助手下载的游戏闪退怎么办 手机版百度云盘不能普通下载怎么办 手机版百度云盘一直加载中怎么办 登别人的网盘单同步通讯录了怎么办 被培训公司骗了贷款之后该怎么办 乐教乐学孩子登陆你那忘记了怎么办 脸擦破了痂掉了留斑怎么办 挤黑头后鼻子又红又疼怎么办 香奈儿邂逅清新淡香水不喷怎么办 脚面被压了肿起来了怎么办 每天加班很累反而失眠严重怎么办 减肥药吃了口臭嘴巴苦怎么办 上火引起的牙疼怎么办吃什么药 舌苔厚口气重怎么办应该吃什么药 宝宝老是额头热四肢不热怎么办 考老师考砸了心理崩溃了怎么办 苹果手机一会白屏一会黑屏怎么办 360云盘的东西删不了怎么办 手机邮箱打开的文件疑似病毒怎么办 电脑qq发送的文件失效了怎么办 小米4c温控文件打开是乱码怎么办 超星尔雅用学号登录密码忘了怎么办 全脸做激光去黄褐斑后脸发红怎么办 上传到微云中的视频下载不了怎么办 微云保存的小电影下载不了怎么办 苹果手机下载有云朵下载不了怎么办 手机下载登录忘了密码了怎么办 软软件被手机加密忘了密码怎么办 苹果手机想下载东西忘了密码怎么办 已经不念书几年了突然想上学怎么办 江湖风云录把王老爷子杀了怎么办 练扫踢胫骨旁边的肌肉受伤了怎么办 四个月宝宝没抱住摔了头部怎么办 老公老是跟年轻的小姑娘聊天怎么办 老婆出轨老公想离婚又舍不得怎么办 孕妇打完无痛分娩针就想睡觉怎么办 熟食店开空调菜品吹的很干怎么办