纯文本协议模板构造JSON请求
上一个版本发布后,有一些同学反馈,旧版的协议模板( 表单模式)使用 ,在测试restfull 接口(json格式)的时候,还是有一些懵,不知道怎么下手,感觉没有其他工具直接复制一个纯文件JSON来得直接跟方便。
所以在LuckyFrame V2.7版本中,新增加了一个纯文本模式构建请求的功能,你可以直接 复制 JSON字符串到纯文本请求文本域中了,见下图:
JSON测试的参数替换
那么问题来了,如果在用例步骤中,我想替换纯文本中某个key的value,要怎么替换呢,比如上图中的json串格式化后是以下这样的:
{
"ContractRoot": {
"SvcCont": {
"staffCode": "-1",
"channelNbr": "-1",
"traceId": "",
"commonRegionId": "地区ID--需要参数化",
"certPhoneNumRel": [
{
"phoneNum": "手机号码--需要参数化",
"certAddress": "湖北省京山县新市镇沿河南路321号附3号43户",
"gPartyId": "",
"certNum": "身份证号码1--需要参数化",
"certType": "1",
"custName": "张三",
"actionType": "12",
"serviceType": "1800",
"lanId": "8420100"
},
{
"phoneNum": "手机号码--需要参数化",
"certAddress": "湖北省京山县新市镇沿河南路66号附12号1098户",
"gPartyId": "",
"certNum": "身份证号码2--需要参数化",
"certType": "1",
"custName": "李四",
"actionType": "12",
"serviceType": "1800",
"lanId": "8420100"
}
]
},
"TcpCont": {
"TransactionID": "6002020001201707100000668354",
"ReqTime": "20170710105338",
"Method": "order.party.modCertPhoneNumRel",
"Sign": "e3dfbb6619f04409a9845c09e664fae2",
"Version": "V1.0",
"AppKey": "6002020001"
}
}
}
例子: 我想把上面JSON字符串中的commonRegionId、第一个phoneNum(张三的)、第二个 certNum (李四的)三个key中的默认值替换掉。
首先要明确的是,这里有三个参数需要替换。而在接口测试中参数替换的通用语法为:
参数1#替换参数值|参数2#替换参数值|参数3#替换参数值
所以, 在整个json串中,如果没有重复的key ,那么你可以直接这样写:
commonRegionId#860000| phoneNum #137777777| certNum#8777662
很明显这种写法只能应对整个JSON中没有重复key的情况
如果是针对上面的JSON串,在 phoneNum、 phoneNum都存在重复的情况下,我们应该怎么写呢?
重点来了:如果key存在重复,那么你可以写成key[ index ] index指的是key在整个字符串中的序号,表示你 要替换同名key中的第几个, 如果你有key后面没有带[ index ],会默认替换这个key的第一个。
写法一:会替换 commonRegionId、第一个phoneNum(张三的)、第一个 certNum (张三的)
commonRegionId#860000| phoneNum #137777777| certNum#8777662
写法 二:会替换commonRegionId、第一个phoneNum(张三的)、第二个certNum(李四的)
commonRegionId#860000| phoneNum #137777777| certNum[2]#8777662
写法 三:会替换commonRegionId、第一个phoneNum(张三的)、第二个certNum(李四的)
commonRegionId#860000| phoneNum[1] #137777777| certNum[2]#8777662
以上三种写法,写法二和写法三都能满足例子中的需求。
使用起来是不是很简单呢,如果你看明白了,就手动点个赞留个言吧!
如果对软件测试、接口测试、自动化测试、性能测试、LR脚本开发、面试经验交流。感兴趣可以175317069,群内会有不定期的发放免费的资料链接~