响应断言

状态码断言

在请求上【右键】—【添加】—【断言】—【响应断言】
image.png
在断言中添加具体的值
image.png

  • 响应代码: 状态码
  • 相等: 值相等
  • 测试模式: 具体的值。

image.png
执行的时候,如果断言通过,查看结果树中是不会显示。

只有当断言不通过的时候,查看结果树中会有对应的错误提示。
当失败的场景。
image.png

响应文本断言

image.png
上面是发布话题返回的结果。需要对发布成功的返回结果进行断言。
结果中应该包含

  1. "success":true,"topic_id"

在请求上添加 响应断言。
image.png
使用响应文本进行断言。
断言方式为 包括


使用响应文本 断言的方式可以满足大部分场景的测试。但是具体某些场景可能不太适合。比如
image.png
主题首页 接口 limit字段的值为 15, 那么返回的结果中应该有15条记录。
针对这个检查点进行断言, 使用上述的 响应断言 实现不了。

JSON JMESpath 断言

主要参考: https://jmespath.org/specification.html#function-evaluation

image.png

根据文档的上的语法, 使用 length(@) 函数可以获取数据的长度。
image.png
那么现在可以使用 jmspath 断言。
在接口上 — 【右键】—【添加】—【断言】—【JSON JMESPath Assertion】
image.png
添加对应的数据即可。
image.png

练习

在 主题首页 接口中 添加 tab = “ask” 的请求参数,服务器返回结果中所有的话题的 tab值应该为 ask
image.png
请对上面的需求添加断言。

还是使用JMESpath 断言
image.png

  • data[?tab=='ask'] 查找所有的tab=“ask” 的话题。
  • length() 返回数据的长度。

添加断言。 因为服务器的返回结果中有15条数据,15条数据的tab值都是ask,所以 length(data[?tab==’ask’]) 的长度也是15.
image.png

  1. length(data[?tab=='ask'])

动态断言

根据上面的业务

JMeter-02 断言 - 图15
创建话题的返回结果
image.png
image.png

两个接口返回的topic_id 值都一样。并且每次运动都是一个新的id值。

所以在 编辑主题上使用断言。
image.png

脑图

JMeter 提取器断言.svg

附件

https://www.bilibili.com/video/BV11B4y1P7nr/
点击查看【bilibili】

面试问题

  1. 你是怎么处理接口关联的?
    1. 遇到有关联的接口,先根据业务关系梳理接口执行顺序。
    2. 在上游接口中提取变量,提取变量常用方法:正则表达式提取器,json提取器,JMESPath 提取器等。
    3. 在下游引用变量即可。
  2. 如果上游接口中返回的数据特别多,数据的顺序也不确定,你怎么提取你想要的值?
    1. 先使用正则表达式,观察数据的特征,看能否使用这些特征确定数据的位置,如果能确定,可以直接使用正则。
    2. 如果不能确定,可以使用JMESPath json提取器的方式 根据条件进行数据提取。
  3. 你怎么判断接口是通过还是失败?
    1. 可以通过添加断言的方式。
    2. 主要通过两方面进行判断:
      1. 可以根据状态码断言
      2. 要根据服务器返回结果中的主要字段进行判断
        1. 响应文本 断言
        2. json 断言
        3. json JMESPath 断言