抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

Assertion (断言)

ps:以当前版本5.1.1为例

1.Response Assertion(响应断言)

image.png

响应断言是几个断言里比较常用的断言,使用也比较简单。

主要三部分组成

测试字段:选择一个断言的原始内容,可以是响应头,也可以是文本,请求数据等等

匹配规则和调试模式:选择规则,是包含,还是被相等,还是否,或者等等,调试模式中写具体的值。

自定义失败消息: 这个不是必写,就是说假如断言失败返回什么信息。

例如一个接口,预期返回如下{code: 0, data: [], message: success},则可以这么写:

本地启了一个Flask,定义一个接口

image.png

浏览器访问效果是

image.png

然后jmeter中断言一下 “code”:0

image.png

image.png

添加一个断言监听器,否则如果断言成功,在结果树里是不显示的(失败了会显示出来)。

image.png

可以看到这里不是我们自定义的失败信息,说明断言成功了,另外需要说明的一点是,在响应断言里面,我们必须要写”code”而不是code,因为结果返回的里面就是加了引号的。

2.Size Assertion(大小断言)

image.png

这个感觉用的不多,单位是bytes,就是用来判断返回内容的大小。

3.XPath Assertion(XPath断言)

image.png

看这个界面,是不是跟Xpath提取器有点像,其实差不多,只不过这里就是用来断言是否存在而不需要找出来赋值变量。针对的是html,xml等文档格式而不是json接口。

例如我要找下百度一下的input。

image.png

xpath语句 ://input[@id=”su”]

放到jmeter中

image.png

执行以下,看结果

image.png

断言成功。

4.Json Assertion(Json断言)

image.png

Assert JSON Path exists: 这里写key,例如json中有一个key叫name那么就写 $.name, 就回去断言是否存在这个key。例如有多层,例如data下面的name,$.data.name。

Addltionally assert value: 勾选后,就可以填写Expected Value,在判断是否存在后还回去比较值是否符合预取。

Match as regular expression: 还是作用于Expected value,不想写的那么精准,断言下大概格式,规则和正则差不多。

Expect null: 预期有key但value为null,是一个快速选项,不能与Expected value共存。

json断言也比较简单,一般做测试都知道了接口预期是什么格式,假如是标准的json格式,而你又需要去判断返回值的某些key的value的值,那么使用这个再合适不过了。

举个简单点的例子,跟上面响应断言一下,假如接口返回{“code”:0,”data”:[],”message”:”success”}

想断言一下message这个key的value是success。

image.png

执行

image.png

断言成功,没有报错。

image

5.Compare Assertion(比较断言)

image.png

摘自网络

比较断言,用来比较两次取样结果,支持正则表达式过滤。一般不建议使用,因为会消耗较多的资源,常用来调试。Compare Assertion与Cpmparison    Assertion Visualizer结合使用,前者进行设置,后者进行断言结果显示。

好吧,也没找到什么实例,那就不用了吧。

6.HTML Assertion(HTML断言)

image.png

摘自网络

HTML断言可以对HTML代码内容进行断言,支持XHTML和XML。

  在HTML断言中利用JTidy来解析HTML代码,JTidy是HTML Tidy的Java实现版本,提供了HTML的语法检查器。JTidy可以用来清除格式不好喝不对的HTML,还提供对整个HTML的DOM分析。

简单点可以用来检测HTML,XHTML, XML语法是否规范。

其中,可以设置允许warning和error个数(Error threshold和Warning threshold)

访问下百度

image.png

image.png

image.png

渣渣百度,语法没all pass,报错了。

7.BeanShell Assertion(BeahShell断言)

image.png

看最下面

image.png

有一些已经定义好的变量,如果上面那些断言不够你用,那么使用BeanShell语法自己写判断规则吧。

用来访问JMeter的属性:

log对象,可以利用此对象写日志

SampleResult对象,从中获取响应数据、响应码等信息,只读

Respose对象,获取响应数据,只读

Failure,用来设置断言成功与否,Boolean类型

FailureMessage,用来设置失败信息

ResponseData对象,湖区响应数据

ResponseCode,响应码

ResponseMessage,响应信息

ResponseHeaders,响应投信息

RequestHeaders,请求头信息

SampleLabel,取样器Label信息

SamplerData,发送给服务器的数据

Ctx (JMeterContext),JMeter上下文信息,从中可以获取线程数、线程号等信息

Vars(JMeterVariables),获取JMeter中定义的变量,或者设置变量

(JMeterPoperties),获取JMeter中的属性,或者设置属性

其他几个方法:

getResponseDataAsString:从SampleResult获取响应数据

getResponseCode:从SampleResult获取响应消息

getResponseMessage:从SampleResult获取响应消息

评论