一、概述
JMeter自带的Assertion功能已经可以满足绝大多数的场景,但是有时候我们可能需要进行一些比较复杂的校验,例如有些包括业务逻辑的校验,此类校验也可以通过BeanShell Assertion的方式来做,但如果代码量较大,且需要多次使用的话,我们不妨新建一个自定义的Assertion,只需要暴露个别参数即可使用,这样脚本的风格会更加的清晰。
下面我们会分两篇用两个例子,来给大家进行介绍。
二、创建Assertion
这个例子中我们将创建一个最简单的Assertion,不需要在页面上GUI中填写任何内容,默认获取响应数据并校验其是否为数字。
在src/components下的org.apache.jmeter.assertions包下创建类MyAssertion。可以看到我们的MyAssertion类继承自AbstractTestElement并实现了Assertion接口,我们需要做的就是去实现getResult方法。
其中参数response对应的是各类Sampler中的SampleResult,可以参考上一篇JavaSampler中的runTest方法,我们可以获取SampleResult中ResponseCode、ResponseData等内容,并用于校验。此外,我们需要做的就是根据不同情况,设置AssertionResult的值。
在src/components下的org.apache.jmeter.assertions.gui包下创建类MyAssertionGui类。可以看到我们的MyAssertionGui类继承自AbstractAssertionGui,我们需要做的就是去实现以下3个方法
1、getLabelResource
用于显示监听器中的lable,其中my_assertion_title2需要在国际化文件中添加对应的内容,国际化文件在/src/core/src/main/resources/org/apache/jmeter/resources目录下
2、createTestElement
这边需要注意的是需要new对应的Assertion类。
3、modifyTestElement
这个没什么好说的,直接复制就行。
4、annotation
此外我们可以通过annotation设置Assertion的位置及名称
三、运行
直接通过runGui启动就行,不清楚的同学可以参考<环境搭建篇>。新建一个Java请求,选择我们刚刚创建的MyAssertion,我们可以在java sampler的ResultData中填入数字或非数字内容进行测试。
此外,生成的jar包为jmeter/lib/ext/ApacheJMeter_components.jar,如果其他小伙伴需要用的话,直接将此文件覆盖原有文件即可。
四、总结
上简单为大家介绍了一下JMeter中Assertion的二次开发,本例中没有涉及到在Assertion中填写数据并在代码中获取的内容,此部分内容涉及到java swing的内容,因此未做展开,此部分内容将会在下一篇中为大家介绍。如果大家还有别的什么问题,可以在评论中留言。
每一篇文章都来自鲁德精心原创,如果文章能帮到你,欢迎转发和点赞,让更多的朋友受益!跟着鲁德一起,每天进步一点点,终会质变!让你面试拿高薪!