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

      

  • 相关阅读:
    开源图标字体 uiw-iconfont v1.2.6 发布,新增图标
    OAuth授权登录
    网站视觉设计规范
    LOGO有哪几种常规设计思路?
    Web设计规范----控件、组件
    前端工程师的新选择WebApp
    openstack学习-网络管理 (转)
    理解OpenStack与SDN控制器的集成(转)
    NFV MANO 架构
    Raid 磁盘阵列
  • 原文地址:https://www.cnblogs.com/happyuu-2019/p/13572533.html
Copyright © 2020-2023  润新知