• 1.2-断言


    断言:把你的预期结果写进断言内,若实际响应数据与预期结果相符,那么Jmeter就判断接口通过,若实际结果与你的预期结果不符,那么Jmeter就判断接口失败

    一、响应断言

    简介:对服务器的相应接口进行断言校验,来判断接口测试得到的接口返回值是否正确(一般用户HTTP请求下)

    右击线程组——添加——断言——响应断言

    界面组件介绍:

    • Apply to (响应断言的应用范围)
    • Main sample and sub-samples:作用于父节点取样器及对应子节点取样器
    • Main sample only:只作用于父节点取样器(一般的断言都选这个)
    • Sub-samples only:只作用于子节点取样器
    • JMeter Variable:只作用于jmeter变量(可写入正则提取的响应值)

    测试字段:

    • 响应文本:请求的响应文本信息,不包含响应头信息。最常用的断言字段
    • 响应代码:对应http返回的响应码(如101,200,302,404,501等)
    • 响应信息:匹配响应信息
    • 响应头:响应头信息
    • URL样本: 请求url,如果有重定向包含重定向url(是对sample的url进行断言。如果请求没有重定向(302),那么这个就是请求url。 如果有重定向(且跟随重定向),那么url就包含请求url 和 重定向url)
    • 文档(文本):通过Apache Tika从各种的文档中提取的文本进行验证,包括响应文本,pdf、word等等各种格式(一切Apache Tika 支持服务器响应,包括文本响应,还支持 PDF,Office, Audio, Video,formats.jmeter会用Apache Tika 去解析服务器响应内容,会很耗内存,而且也很容易解析失败。所以一般普通 http请求,不要选择这个。)
    • 忽略状态(Ignore Status): 一个请求多项响应断言时,忽略某一项断言的响应结果,而继续下一项断言(当我们要验证404.501等http响应代码时,需要勾选忽略状态(ignore status)。因为当http 响应代码为400,500时,jmeter默认这个请求是失败的。)

    模式匹配规则:

    • 包括:响应的结果中包含指定的文本或者字段值,支持正则表达式
    • 匹配:相当于equals,完全匹配,期望值与实际结果必须完全一致,一般结合正则表达式使用(正则表达式必须匹配整个返回值,而非返回值的一部分)
    • 相等:响应结果与指定的内容完全一致,不支持正则表达式
    • 字符串:返回结果,包含指定的字符串,不支持正则表达式
    • 否:相当于取反,如果上面断言结果为true,勾选“否”后,最终断言结果为false,如果上面断言结果为false,勾选“否”后,最终断言结果为“true”
    • 或者: 勾选此项后,可以设置多个预期值,只要有一项判定成功,则断言判定成功。

    测试模式:

    • 填写预期结果,与实际返回结果形成判断

    自定义失败消息:

    • HTTP响应代码对应的响应消息,当断言失败时,会返回你编辑的内容

    二、Json 断言

    简介:判断某个请求执行状态&响应结果为Json格式(更为精准的判断)

    右击线程组——添加——断言——Json断言

    界面组件介绍

    • Assert JSON Path exists:  $.后面加需要检查的Json字段的路径,以“.”划层级
    1. {
    2. "store": {
    3. "book": [
    4. {
    5. "category": "reference",
    6. "author": "Nigel Rees",
    7. "title": "Sayings of the Century",
    8. "price": 8.95
    9. },
    10. {
    11. "category": "fiction",
    12. "author": "Evelyn Waugh",
    13. "title": "Sword of Honour",
    14. "price": 12.99
    15. },
    16. {
    17. "category": "fiction",
    18. "author": "Herman Melville",
    19. "title": "Moby Dick",
    20. "isbn": "0-553-21311-3",
    21. "price": 8.99
    22. },
    23. {
    24. "category": "fiction",
    25. "author": "J. R. R. Tolkien",
    26. "title": "The Lord of the Rings",
    27. "isbn": "0-395-19395-8",
    28. "price": 22.99
    29. }
    30. ],
    31. "bicycle": {
    32. "color": "red",
    33. "price": 19.95
    34. }
    35. },
    36. "expensive": 10}

     路径写法:

    1. $.book:表示在JSON串以"book"为key获取value,也就是book里的所有数据
    2. $.book[0].author:对应值“Nigel Rees”
    3. $..author:定位到所有的“author”值
    4. $.store.*:对应store下所有的数据
    5. $.store..price:对应所有price值
    6. $..book[2]:book中第三个区间的值
    7. $..book[2]:book中倒数第二个区间的值
    8. $..book[0,1]:book中第一个和第二个区间的值
    9. $..book[:2]:从索引0(包括)到索引2(不包括)的所有书籍 
    10. $..book[1:2]:从索引1(包括)到索引2(不包括)的所有书籍
    11. $..book[2:]:索引2(包括)之后的所有书籍 
    12. $..book[?(@.isbn)]:所有有isbn值的书
    13. $.store.book[?(@.price<10)]:所有price值小于10的书籍
    14. $..book[?(@.price <= $['expensive'])]:所有小于等于expensive值的书
    15. $..book[?@.author=~/.*REES/i]:author中含有REES的书(忽略大小写)
    16. $..*:所有数据
    17. $..book.length():书籍数量
    • Additionally assert value: 是否添加断言值(添加断言值和返回结果中的Json字段做比较)(一般要选择的)
    • Match as regular expression :是否支持正则表达式
    • Expected Value:添加要检查的断言值(勾选Additionally assert value才可添加断言值)
    • Expect null: 断言值为null,勾选此项,则会匹配断言结果为null的结果(勾选Additionally assert value才生效,与之是或的关系,判断优先级高于Additionally assert value)
    • nvert assertion: 取反,若上述断言结果为true,勾选此项后,断言结果为false;反之,若上述断言结果为false,勾选此项后,断言结果为false(以上设置的校验都不成立时生效)

    添加断言结果

    简介:查看Json断言是否通过

    右击断言——添加——监听器——断言结果

  • 相关阅读:
    数据库(mysql)之用户管理
    Debezium系列之:Debezium技术专栏第300篇系列文章之打通Debezium实时采集Oracle数据库数据到Kafka集群的技术
    【web-避开客户端控件】(2.1.2)客户端传输数据:Referer消息头、模糊数据、ASP.NET ViewState
    SQL 教程之 10 个 SQL 操作用于 80% 的数据操作
    Linux—curl 命令用法大总结
    js版微信测试号推送消息、生日、纪念日、网易云热评、舔狗日记【JavaScript版】保姆级教程 青龙面板做微信测试号推送生日、纪念日
    使用phpMyAdmin管理WordPress数据库入门指南
    ts中的元组是什么有什么用
    【C++程序员必修第一课】C++基础课程-04:变量、常量和指针
    数据结构与算法 - 计算表达式
  • 原文地址:https://blog.csdn.net/qq_44404251/article/details/125490468