Jmeter:http请求及json断言

一 前言

环境:window 10
jmeter 5.3

对jmeter的http请求和json断言这2个组件中的一些字段进行简单说明

二 http请求

image
如上,可以选择切换语言,有时切换成中文或者英文,这样需要填写字段的意思更加一目了然

image
image

三json断言

断言请求返回的json数据数时,jmeter中默认有2种方式可选,如下
image

json断言

先说第一种即json断言
image
image

例子

image
image
image

结果
image
断言数组的那个断言失败了 写的很清楚,在断言中我们期望是是a,但是实际值是b

image
如上是我们请求的响应数据,返回的是一个json,我们要断言的数据位于这个json串中的json字段中
两个断言我们匹配字段的写法是
$.json.username
$.json.list[1]
这里使用了一种叫jayway jsonpath中的一种语法规则,该规则具体见https://github.com/json-path/JsonPath

简单说,这里的规则是,以$开头,要匹配对象中的字段时,就写成 点+字段名,要匹配数组中的值时,就写成[index], index为在数组中的索引,从0开始。当然,实际上还有更多符号去匹配更复杂的一些场景

假如返回的json串是这样
[{"user1":"user01"},{"user2":"user02"}]
断言user1 就要写成$[0].user1或$.[0].user1
断言user2 就要写成$[1].user2或$.[0].user2

假如返回的json串是这样
{"username":
[{"user1":"user01"},{"user2":"user02"}]
}
断言user1 就要写成$.username[0].user1
断言user2 就要写成$.username[1].user2

注意,如果请求返回的数据不是json格式,将断言失败
json path中写的表达式找不到对应的内容时,将断言失败
期望值是空对象(注意,不是空字符串或空数组这种)时,不要再期望值里写null或none要勾选下面的复选框才行

JSON JMESPath assertion

第2种json断言即json JMESPath 断言
这种断言页面需要填写的字段和第一种普通的json断言一样,唯一的区别是提取json中的字段时采用的语法规则不同,如下
image
JMESPath 断言用的是JMESPath的语法规则,JMESPath是一种比较方便的查询json数据的语言,鄙人在python中处理json数据时经常使用它
JMESPath具体见
https://jmespath.org/tutorial.html

对于JMESPath,简单来说,若json是一个对象,可像下面这样写
image
image

若是一个数组,像下面这样写
image

对象中包含数组
image

例子

还是之前的Jmeter例子,添加一个JMESPath断言
image

查看结果
image

有报错,是前面的普通json断言报错,JMESPath 断言并未提示错误,说明断言通过

注意:JMESPath的规则和前面普通json断言的规则是一致的

posted @ 2023-12-23 23:35  工作手记  阅读(242)  评论(0编辑  收藏  举报