超简单两招搞定JSON接口自动化测试(RESTful API)
2018-11-29 11:48:25
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



以上三种写法,写法二和写法三都能满足例子中的需求。


使用起来是不是很简单呢,如果你看明白了,就手动点个赞留个言吧!