Seagull |
纯文本协议模板构造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
以上三种写法,写法二和写法三都能满足例子中的需求。
使用起来是不是很简单呢,如果你看明白了,就手动点个赞留个言吧!
|
2018-11-29 11:48:25