【JSON Assertion】就是JMeter断言中的JSON断言。此组件允许对JSON文档执行验证。它在使用过程中需要注意一下几个内容:
首先,它将解析JSON,如果数据不是JSON,它将失败。
其次,它将使用Jayway JsonPath 1.2.0中的语法搜索指定的路径。如果找不到路径,它将失败。
第三,如果在文档中找到了JSON路径,并且请求了针对预期值的验证,那么它将执行验证。对于空值,在GUI中有一个特殊的复选框。注意,如果路径将返回array对象,则将对其进行迭代,如果找到预期值,则断言将成功。要验证空数组,请使用[]字符串。另外,如果patch返回dictionary对象,则在比较之前将其转换为string。
在上图中,第一个重要的参数就是【Assert JSON Path exists】,这是什么呢?下面就详细的说明一下:
什么是JSON Path?
JsonPath是一种简单的方法来提取给定JSON文档的部分内容。 JsonPath有许多编程语言,如Javascript,Python和PHP,Java。
JsonPath提供的json解析非常强大,它提供了类似正则表达式的语法,基本上可以满足所有想要获得的json内容。(具体源代码信息和应用可以查看:https://github.com/json-path/JsonPath)
JSON Path的操作符和语法
JsonPath中的“根成员对象”始终称为$,无论是对象还是数组。
JsonPath表达式可以使用点表示法。例如:$.store.book [0].title
或括号表示法。例如:$['store']['book'][0]['title']
看一个具体的JSON案例(案例来自:https://goessner.net/articles/JsonPath/):
{ "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
}
}
}
针对以上的JSON格式的数据,
下面,通过JSON Path进行元素的分析: