断言
1 响应断言
响应断言可以增加各种匹配方式来比较请求或者响应的各种字段。匹配字符串包括
- 包含,匹配- perl5类型的正则表达式
- 相等,子串-文本类型,大小写敏感
正则表达式后面再细讲
2 断言持续时间
就是判断响应时间是否在给定的时间内,如果超出则断言失败
3 大小断言
指定响应大小的判断方式,如相等,大于,小于等等,如果响应为空,则大小是0
4 beanshell断言
使用beanshell脚本来验证响应结果
为了更好的性能表现,建议使用JSR223断言+Groovy
5 MD5断言
md5断言就是验证响应值的md5加密结果是否一致
6 JSR223断言
JSR223断言是利用JSR223脚本语言来验证上一个请求结果。单独细讲JSR223基础使用
4.7 JSON断言
json路径匹配使用方式参考
https://github.com/json-path/JsonPath
操作符
操作符 | 描述 |
---|---|
$ |
根元素,所有路径的起始 |
@ |
过滤器 |
* |
通配符,数字或名称,表示所有 |
.. |
深度扫码 |
.<name> |
用点标记的子元素 |
['<name>' (, '<name>')] |
用中括号标记的一个或多个子元素,逗号分隔 |
[<number> (, <number>)] |
数组下标,多个的时候用逗号分隔 |
[start:end] |
数组的切片,开头和结尾下标 |
[?(<expression>)] |
过滤表达式,表达式结果必须是布尔值 |
函数
函数在路径的尾部引入,他的输入就是路径表达式的结果,输出类型由函数本身决定。
函数 | 描述 | 输出 |
---|---|---|
min() | 返回数组元素中最小值 | Double |
max() | 返回数组元素中最大值 | Double |
avg() | 返回数组元素的平均值 | Double |
stddev() | 返回数组元素的标准差 | Double |
length() | 返回数组长度 | Integer |
sum() | 返回数组元素的和 | Double |
过滤器操作符
过滤器是对数组进行过滤的一个逻辑表达式, A typical filter would be [?(@.age > 18)]
where @
represents the current item being processed. More complex filters can be created with logical operators &&
and ||
. String literals must be enclosed by single or double quotes ([?(@.color == 'blue')]
or [?(@.color == "blue")]
).
操作符 | 描述 |
---|---|
== | 相等 |
!= | 不等t |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
=~ | 正则匹配 |
in | 在数组中 |
nin | 不在数组中 |
subsetof | 子集 |
anyof | 交集 |
noneof | 不相交 |
size | 长度相等 |
empty | 为空 |
例子
{
"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
}
路径 | 结果 |
---|---|
$.store.book[*].author | 所有书的作者 |
$..author | 所有作者 |
$.store.* | store下的所有内容,包括book和bicycle |
$.store..price | store下的所有价格 |
$..book[2] | 第3个book |
$..book[-2] | 倒数第2个book |
$..book[0,1] | 前2个book |
$..book[:2] | 从0-1的book,也就是第1和第2个book |
$..book[1:2] | 从1-1的book,也就是第2个book |
$..book[-2:] | 倒数第2和倒数第1个book |
$..book[2:] | 从第3个到末尾所有book |
$..book[?(@.isbn)] | 所有包含isbn的book |
$.store.book[?(@.price < 10)] | 所有价格小于10的book |
$..book[?(@.price <= $['expensive'])] | 所有价格小于等于‘expensive’的book |
$..book[?(@.author =~ /.*REES/i)] | 所有作者匹配正则表达式的book |
$..* | 所有 |
$..book.length() | book数量 |