性能测试-JMeter断言之JSON断言

前面一节我们学习了JMeter断言之响应断言,今天我们来学习JMeter另一种断言方法:
JSON断言。

JSON用于描述文本数据结构,有如下形式:
1.对象(object)
对象是一组无序的名称/值对。对象以{(左大括号)开始,以}(右
大括号)结束。每个名称后面跟着:冒号,
名称/值对之间用逗号分隔。
比如:
{"name":"zhangsan","sex":1,"age":25}
2.数组(Array)
数组是值的有序集合。数组以[(左中括号)开始,以](右中括号)
结束。值之间用逗号分隔。
比如:
{
"man":[{"name":"zhangsan","sex":1,"age":21},
{"name":"lisi","sex":0,"age":18},
{"name":"wangwu","sex":0,"age":25}]
}
3.值(value)
值可以是字符串、数字、true/false、null、对象或数组。
4.字符串(string)
字符串是由零个或多个Unicode字符组成的序列,用双引号括起来,
使用反斜杠转义。
字符表示为单个字符串。字符串非常类似于C或Java中的字符串。
5.数字(number)
一系列0-9的数字组合,可以为负数或者小数。还可以用e或者E表示
为指数形式;

数字非常类似于C或Java数字,但只是不使用八进制和十六进制格式。
6.空白符(whitespace)
可以在任意成对的语法符号之间插入空白符(包括空格、换行符、回车符、横向制表符)。

我们经常使用XPath来分析、转换以及有选择地从XML文档中提取数据。与XPath类似,JOSNPath可以方便从JSON结构中发现和提取数据。

JSONPath中的“根成员对象”总是被称为$,无论它是对象还是数组。

JSONPath表达式有“dot–notation”(.号)和“bracket–notation”([]号)两种不同的表示风格。

例如,

$.store.book[0].title or

$[‘store‘][‘book‘][0][‘title‘]

JSONPath语法元素

JSONPath实例:

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

  }

  }

  }


JSON 断言:

JSON断言可以对服务器返回的JSON文档进行验证。

JSON断言有两种使用模式:

1.根据JSONPath能否在JSON文档中找到路径;

2.根据JSONPath提取值并对值进行验证。

若文档格式为非JSON则断言失败;

若找不到路径断言失败;

若提取值与预期值不一致断言失败。

配置项

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外,还有一种特殊的值,就是空数组,预期值不能不填,需要

设置为:[]

应用案例

这里仍以前面介绍过的查询被购买商品的总金额接口为例来讲述JSON断言的用法。

该接口返回的响应数据为JSON,故可以使用JSON断言。

操作步骤:

1.对预期结果要验证的项进行参数化这里验证err_msg,result将预期结果写入csv文件中

比如:

case_name,goods_id,goods_attr,goods_num,error_msg,rs lt

case1,9,226,3,,¥6630元

case2,,226,1,没有找到指定的商品或者没有找到指定的商品属性。

case3,9,,1,,¥2298元

case4,9,226,,¥2308元

2.添加JSON Assertion并进行配置

JSON断言每次只能断言一个参数,因此这里需要添加多个JSON断言。

假设对错误消息与商品金额这个两个返回参数值做断言。

{

"err_msg": "没有找到指定的商品或者没有找到指定的商品属性。",

"result": "",

"qty": 1,

"err_no": 1

}

$.err_msg --> 没有找到指定的商品或者没有找到指定的商品属性。

$.qty --> 1

JSON断言配置

原文地址:https://blog.51cto.com/14645850/2464899

时间: 2024-11-29 08:24:45

性能测试-JMeter断言之JSON断言的相关文章

jmeter断言,结果报告--6(响应断言和JSON断言,聚合报告,查看结果树)常见状态吗的排查方式

http状态码的介绍和常见排错方法: 1.响应断言 需要检查响应的内容,可以使用响应断言: 添加 -- 断言 -- 响应断言 2.JSON断言:如果响应的结果是JSON格式,则可以使用json断言去实现. json表达式: $.code 代表json中的code字段值 详细用法参见:https://github.com/json-path/JsonPath 3.查看结果树 监听器 -- 查看结果树 4.聚合报告 Throughput 吞吐量——默认情况下表示每秒完成的请求数(Request pe

性能测试-JMeter断言之响应断言精说

断言用于验证取样器请求或对应的响应数据是否返回了期望的结果.可以是看成验证测试是否预期的方法. 对于接口测试来说,就是测试Request/Response,断言即可以针对Request进行,也可以针对Response进行.但大部分是对Response做断言. JMeter常见的断言元件如下:1.响应断言 2.JSON Assertion 本章节,我们主要先来学习JMeter响应断言. 配置项 Apply to: 1.在大多数情况下,只有主取样器具有所有必需的响应数据.但是很多Web应用使用了Aj

Jmeter JSON断言和响应断言的区别是什么?

假设响应数据是{"code":0,"datas":{"option":1}} 响应断言:"code":0,检查点这样写就不会报错,但是如果想验证 "option":1,断言结果就会出错. 这时候就需要使用JSON断言. JSON断言:$.datas.option,  预期结果填0,断言通过.需要了解JSON Path表达式语法,很简单,5分钟不到就能搞定. 原文地址:https://www.cnblogs.

Jmeter入门15 JSON Assertion 适用于json格式的响应断言

当响应结果是json格式时,用JSON Assertion更方便判断. 1 在请求上右键添加json断言 2  编辑json Assertion 判断方式: 如果响应结果不是json格式的,fail 如果json path找不到元素,fail 如果json path找到元素,没有设置条件,pass 如果json path找到元素了,不符合条件,fail 如果json path找到元素,且符合条件,pass 如果json path返回的是一个数组,迭代判断是否有元素符合条件,有则pass,无则fa

Jmeter之用于json格式的响应断言

当响应结果是json格式时,用JSON Assertion更方便判断. 1 在请求上右键添加json断言 2  编辑json Assertion 判断方式: 如果响应结果不是json格式的,fail 如果json path找不到元素,fail 如果json path找到元素,没有设置条件,pass 如果json path找到元素了,不符合条件,fail 如果json path找到元素,且符合条件,pass 如果json path返回的是一个数组,迭代判断是否有元素符合条件,有则pass,无则fa

JMeter之检查点(JSON断言)

上一章节写了响应断言,本章就接着介绍下JSON断言(JSON Assertion) 参数: Assert JSON Path exists :    $.后面添加你想要检查的json字段. Addittionally assert value:     是否添加断言值, 添加的断言值和json返回的字段值进行比较,等于特定的值. Match as regular expression:    是否支持正则表达式. Expected Value:    添加断言值. Expect null:   

Jmeter笔记:响应断言详解

平时我们使用jmeter进行性能测试时,经常会用到断言.jmeter提供了很多种断言,本来想全都写一下,但发现每一个断言里面的东西都很多,所以就先写一下我们经常使用的响应断言. 响应断言 :对服务器的响应进行断言校验 (1)应用范围: main sample and sub sample, main sample only , sub-sample only , jmeter variable 关于应用范围,我们大多数勾选“main sample only” 就足够了,因为我们一个请求,实质上只

Jmeter CSV 参数化/检查点/断言

当参数的值没有规律且量不太大时,可以使用CSV Data set config这种方法. 案例: 应用Sogou自动搜索关键字: 软件开发测试,web功能自动化测试,性能自动化测试,Selenium以及Jmeter 要求:使用Jmeter 的CSV Data set config来完成 具体步骤: 1. 创建一个csv文件,内容为参数的值集,每一个参数占一列,第一行就开始写参数值,不要写参数名. 比如在D:\test.txt 中添加以下内容  2. 打开Jmeter,并打开先前使用Badboy录

2、使用断言(json assertion)

1.假设现在有一个服务端的返回数据(需要测试的)为:HTTP/1.1 200 OK,要测试的响应字段勾选Response Headers,模式匹配规则选择Substring,把该响应断言命名为HttpCodeStatus,把响应断言放在线程外(全局) 2.某接口返回服务端响应数据,返回的状态码10001,然后再http请求里面新建一个断言:“json assertion ”,在里面标明要校验的是:['status'],然后新建一个断言结果进行查看: 前提:有返回的数据,且需要断言(否则不需要这一