断言:依靠软件程序自动判断操作结果的正确性,用于检查测试中得到的响应数据等是否符合预期。在接口测试用例中没有断言的接口用例是无效的,一个接口的断言有三个层面,一个是HTTP状态码的断言,另外一个是业务状态码的断言,最后是某一接口请求后服务端响应数据的断言

Jmeter最常用断言:Response Assertion(响应断言),Json断言,beanshell断言

一:Response Assertion(响应断言)
响应断言:可选择断言验证的范围(URL,响应头,响应码,响应体,响应附件),匹配的模式(纯文本还是正则表达式匹配)

操作响应断言:添加-断言-响应断言

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

测试字段:
  响应文本:请求的响应文本信息,不包含响应头信息。最常用的断言字段
  响应代码:对应http返回的响应码
  响应信息:匹配响应信息
  响应头:响应头信息
  URL样本: 请求url,如果有重定向包含重定向url
  文档(文本):通过Apache Tika从各种的文档中提取的文本进行验证,包括响应文本,pdf、word等等各种格式
  忽略状态(Ignore Status): 一个请求多项响应断言时,忽略某一项断言的响应结果,而继续下一项断言
 
  模式匹配规则
  包括:响应的结果中包含指定的文本或者字段值,支持正则表达式
  匹配:完全匹配,期望值与实际结果必须完全一致,一般结合正则表达式使用
  相等:响应结果与指定的内容完全一致,不支持正则表达式
  字符串:返回结果,包含指定的字符串,不支持正则表达式
  否:不进行匹配

2.添加断言结果,添加-监听器-断言结果

3.发送请求,查看断言结果

查看此请求实际响应结果十分与断言一致

可看到此请求实际响应结果的status是404,与我们断言200不一致,故fail
可对其它响应文本进行断言,与此类似

二:Json断言
JSON断言可以对服务器返回的JSON文档进行验证。
JSON断言有两种使用模式:
1.根据JSONPath能否在JSON文档中找到路径;
2.根据JSONPath提取值并对值进行验证。
若文档格式为非JSON则断言失败;找不到路径断言失败;提取值与预期值不一致断言失败。

1.添加-断言-Json断言

2.若响应数据返回是Json格式,我们可以对其进行json断言操作,在请求的察看结构树响应数据里提取数值对其进行断言,示例提取data里的phone进行断言如下

配置项
Assert JSON Path exists:
用于断言的JSON元素的路径(JSONPath)。
1.Additionally assert value
是否额外验证根据JSONPath提取的值。
不勾选,验证JSONPath能否在JSON文档中找到路径;
勾选,验证根据JSONPath提取值是否预期。
2.Match as regular expression
预期值是否可以使用正则表达式。
不勾选,预期值不能使用正则表达式表示;
勾选,预期值可以使用正则表达式表示。
Expected Value:
预期值。
1.Expect null
若验证提取的值为null,则勾选此项。
这里有两个地方需要额外注意:
a.验证null值,还是需要勾选“Additionally assert value”,否则验证的是JSONPath能否找到路径;
b.预期值不填表示空字符,与null不等价。
2.Invert assertion(will fail if above conditions met)
若勾选,表示对断言结果取反。

注:除了null外,还有一种特殊的值,就是空数组,预期值不能不填,需要设置为:[],表示空数组。

3.查看断言结果

可看到实际响应结果与预期不一致,故fail

三:Beanshell断言
BeanShell断言可以使用beanshell脚本来执行断言检查,可以用于更复杂的个性化需求,使用更灵活,功能更强大,但是要能够熟练使用beanshell脚本
在这里除了可以使用beanshell的内置变量外,主要通过 Failure 和 FailureMessage来设置断言结果

Failure = false;-----表示断言成功
FailureMessage = “......";---自定义的成功信息
Failure = true;----表示断言失败
FailureMessage="......";------自定义的失败信息

1.添加-断言-Beanshell断言

2.对http响应码断言实战

3.查看断言结果

可知响应结果不是200而是404

JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下:
log:写入信息到jmeber.log文件,使用方法:log.info(“This is log info!”);
ctx:该变量引用了当前线程的上下文,使用方法可参考:org.apache.jmeter.threads.JMeterContext。
vars - (JMeterVariables):操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:
    a) vars.get(String key):从jmeter中获得变量值
    b) vars.put(String key,String value):数据存到jmeter变量中
    更多方法可参考:org.apache.jmeter.threads.JMeterVariables
props - (JMeterProperties - class java.util.Properties):操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象。对应于java.util.Properties。
    a) props.get(“START.HMS”);  注:START.HMS为属性名,在文件jmeter.properties中定义
    b) props.put(“PROP1”,“1234”);
prev - (SampleResult):获取前面的sample返回的信息,常用方法:
    a) getResponseDataAsString():获取响应信息
    b) getResponseCode() :获取响应code
    更多方法可参考:org.apache.jmeter.samplers.SampleResult
sampler - (Sampler):gives access to the current sampler

Jmeter常用断言实战详解相关推荐

  1. flutter 获取android 还是ios_Flutter完整开发实战详解(二十、 Android PlatformView 和键盘问题)...

    作为系列文章的第二十篇,本篇将结合官方的技术文档科普 Android 上 PlatformView 的实现逻辑,并且解释为什么在 Android 上 PlatformView 的键盘总是有问题. 为什 ...

  2. Oracle大型数据库系统在AIX/UNIX上的实战详解

    前言 风,紧, 夜,深沉, 剑,已出鞘, 影,飘然前行! 本书的立意和内容 在服务器领域,IBM p系列服务器与AIX操作系统毫无疑问是UNIX服务器领域中的佼佼者,它代表着UNIX深刻的技术内涵和广 ...

  3. Linux shell脚本入门到实战详解(一)

    Linux shell脚本入门到实战详解 一.shell 入门简介 1.1 什么是 shell # 为啥介绍shell 上次出了一篇linux 命令详解,得到了很多小伙伴的认可,有部分粉丝私信我,让我 ...

  4. Android网络开发技术实战详解

    <Android网络开发技术实战详解> 基本信息 作者: 朱桂英 丛书名: Android移动开发技术丛书 出版社:电子工业出版社 ISBN:9787121173493 上架时间:2012 ...

  5. 《数据修复技术与典型实例实战详解》——1.4 分区表的修复

    本节书摘来自异步社区<数据修复技术与典型实例实战详解>一书中的第1章,第1.4节,作者:叶润华著,更多章节内容可以访问云栖社区"异步社区"公众号查看 1.4 分区表的修 ...

  6. 视频教程-HTML5+CSS3项目实战详解-HTML5/CSS

    HTML5+CSS3项目实战详解 13年软件开发经验,设计开发30多个大型软件,涉及政府.银行.电信.能源等大型软件项目. 精通J2EE体系架构,熟练使用Struts.Spring.hibernate ...

  7. Flutter完整开发实战详解(二、 快速开发实战篇) | 掘金技术征文

     作为系列文章的第二篇,继<Flutter完整开发实战详解(一.Dart语言和Flutter基础)>之后,本篇将为你着重展示:如何搭建一个通用的Flutter App 常用功能脚手架,快速 ...

  8. libraries 和android runtime之间的关系,《Android Studio应用开发实战详解》——第1章,第1.3节Android系统架构...

    本节书摘来自异步社区<Android Studio应用开发实战详解>一书中的第1章,第1.3节Android系统架构,作者 王翠萍,更多章节内容可以访问云栖社区"异步社区&quo ...

  9. 《Android Studio应用开发实战详解》——第1章,第1.5节Android开发学习路线图

    本节书摘来自异步社区<Android Studio应用开发实战详解>一书中的第1章,第1.5节Android开发学习路线图,作者 王翠萍,更多章节内容可以访问云栖社区"异步社区& ...

最新文章

  1. java 日志框架的选择Log4j-SLF4j-Logback
  2. Android逆向--如何调试smali代码?
  3. 网站截图环境 php,Linux环境下php实现给网站截图的方法
  4. Vue学习01-v-on事件修饰符
  5. jQuery.protoype.xxx=function(){}
  6. php反射机制详解,PHP反射机制实现插件的可插拔设计
  7. 【Leetcode | 顺序刷题】数学目录
  8. java面向对象三个关键字,Java 面向对象(三)static 关键字
  9. python后台架构Django教程——视图views渲染
  10. 利用NSFileManager获取文件(文件夹)列表
  11. mysql存储过程输出_MySQL存储过程
  12. kafka下载与安装教程
  13. 1 常见的HTTP股票数据接口整理 腾讯 新浪 网易 2019-08-02
  14. 封堵高危端口,预防勒索病毒
  15. Python 基于OpenCV+face_recognition实现人脸捕捉与人脸识别(照片对比)
  16. am335x LCD调节背光
  17. Linux中vmstat命令详解
  18. Inventor 2021 安装避坑指南
  19. 产品读书《需求:缔造伟大商业传奇的根本力量》
  20. 网站被K(降权)了怎么办?不妨试试这些方法

热门文章

  1. 04 Sorting
  2. 直接内存or系统内存
  3. 八皇后加强版:每个皇后最多攻击一个其它的皇后
  4. idea使用注释时如何不从行首开始
  5. 空间变换网络(Spatial Transform Networks,STN)
  6. (转载)历史——YouTube 上传第一个视频;网易云音乐正式上线;数字音频播放器的发明者出生
  7. go学习 --- gorm查询
  8. 【C++】反向迭代器
  9. 养猫日记2022120
  10. matlab的摆线的两拱,一种拱轴线为摆线的拱桥的设计方法与流程