JMeter中的JSON断言方法
admin
2023-02-20 01:40:06
0

JMeter

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,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语法元素
JMeter中的JSON断言方法
JMeter中的JSON断言方法

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

  }

  }

  }
JMeter中的JSON断言方法
JMeter中的JSON断言方法
JMeter中的JSON断言方法

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断言方法

相关内容

热门资讯

终于了解“闽游麻将拼多多.到底... 终于了解“闽游麻将拼多多.到底是不是挂?”透视曝光猫腻您好,闽游麻将拼多多这个游戏其实有挂的,确实是...
重磅消息“道游牛牛.是不是有挂... 您好:道游牛牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款游戏...
终于明白“正版授权牛牛.真的有... 网上科普关于“正版授权牛牛有没有挂”话题很是火热,小编也是针对正版授权牛牛作*弊开挂的方法以及开挂对...
今日重大通报“新卡农炸金花.到... 网上科普关于“新卡农炸金花有没有挂”话题很是火热,小编也是针对新卡农炸金花作*弊开挂的方法以及开挂对...
今日重磅消息“八闽十三水.开挂... 您好:八闽十三水这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款游...
玩家最新攻略“旺旺福建麻将.有... 网上科普关于“旺旺福建麻将有没有挂”话题很是火热,小编也是针对旺旺福建麻将作*弊开挂的方法以及开挂对...
今日重大消息“龙泰棋牌.辅助器... 您好:龙泰棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款游戏...
终于懂了“微乐卡五星.是不是有... 有 亲,根据资深记者爆料微乐卡五星是可以开挂的,确实有挂(咨询软件无需打...
今日重磅消息“诸暨游戏.怎么装... 网上科普关于“诸暨游戏有没有挂”话题很是火热,小编也是针对诸暨游戏作*弊开挂的方法以及开挂对应的知识...
今日重大消息“正版授权牛牛.真... 您好:正版授权牛牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款...