我是靠谱客的博主 美丽海燕,最近开发中收集的这篇文章主要介绍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字段的路径,以“.”划层级
{

    "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}

 路径写法:

  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断言是否通过

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

最后

以上就是美丽海燕为你收集整理的1.2-断言的全部内容,希望文章能够帮你解决1.2-断言所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部