接口自动化测试 | JsonPath 与 Mustache 请求传参的模板化技术

本文介绍在接口自动化测试中,如何使用JsonPath和Mustache进行参数模板化的操作。通过实例演示JsonPath的元素定位及Mustache的变量替换,并对比两者的优缺点。适合于JSON格式的接口请求参数处理,当遇到非JSON文件时,可借助Mustache解决模板化问题。
摘要由CSDN通过智能技术生成

1.需求背景

在实际的接口测试时,传参有时候可能需要很多,也可能我们就是想要一份完整的参数,必填项和非必填项都包含在内,比如下面的 json

{
  "store": {
    "book": [
      {
        "category": "reference",
        "author": "Nigel Rees",
        "title": "Sayings of the Century",
        "price": 8.95
      },
      {
        "category": "fiction",
        "author": "Evelyn Waugh",
        "title": "Sword of Honour",
        "price": 12.99
      },
      {
        "category": "fiction",
        "author": "Herman Melville",
        "title": "Moby Dick",
        "isbn": "0-553-21311-3",
        "price": 8.99
      },
      {
        "category": "fiction",
        "author": "J. R. R. Tolkien",
        "title": "The Lord of the Rings",
        "isbn": "0-395-19395-8",
        "price": 22.99
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  },
  "expensive": 10
}

一个个在方法中传入显然不现实;写入hashmap中传入的话工作量和复杂度也很大,这个时候就需要一个模板,把我们需要的参数和结构提前定义好,我们只需要修改其中对应的值即可,这就要引出今天的两位主角:

  • JsonPath

  • Mustache

2.JsonPath

先来看第一个模板技术JsonPath,注意这里的JsonPath指的是Jayway JsonPath,maven依赖如下:

 <dependency>
      <groupId>com.jayway.jsonpath</groupId>
      <artifactId>json-path</artifactId>
      <version>2.4.0</version>
  </dependency>

2.1 元素定位

在UI自动化中我们会使用到xpath的元素定位的技术,在这里我将其类比过来方便理解记忆;Jayway JsonPath为我们提供了两种定位的写法:$.store.book[0].title、$['store']['book'][0]['title']

这里我习惯用第一种,也推荐使用,比较类似编程时的方法调用;

用 $ 表示从根元素开始找,. 点上要找的元素,一层一层的找下去,直到达到你需要找的地方;同样的元素可以根据中括号[]+索引的方法来区分&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值