当前位置:首页 > Web开发 > 正文

JMeter断言之JSON断言

2024-03-31 Web开发

标签:

前面一节我们学习了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断言配置

技术图片

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

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32065.html