JMeter教程系列(三)-断言

断言

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数量

  

原文地址:https://www.cnblogs.com/happyuu-2019/p/13572533.html