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断言有两种使用模式:
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