1.场景描述
使用jmeter如果单纯的用什么响应断言那就没意思了,并不能起到接口测试的目的,因为实在是没啥意义……
所以会用到beanshell来解析接口返回的json,针对json中的某些值进行具体的断言
2.所遇问题
使用beanshell时就会遇到问题!
用了就会知道,那个Failure=true或false就是断言的结果,但是!当你的beanshell脚本写一堆,不只一处Failure时,就会发现最后的结果并不是自己想要的。尤其是在循环里,该怎么用??
3.解决方法
多次尝试和探索,终于知道了break的妙用
首先说一下Failure这个玩楞在jmeter中的作用:Failure就是一个普通的beanloon变量,当beanshell脚本执行完后(注意:是执行完后!),jmeter会去判断Failure的值,是true的话就是断言失败,也就是接口有问题
那么~问题来了,脚本写的多的时候,本来前边Failure是true了,但是后边的继续执行,又把Failure置为了false。导致最后结果并没有报错,而是接口执行成功,如下这样
在java编写时,break一般是用在循环或switch里的,如果这样写在if里是报错的……
居然!!!jmeter中可以这样用!
在Failure断言后加break,来结束脚本的执行
当然,这样一旦断言失败,就结束脚本,后边的也就不执行了……
没关系啊,断言失败就说明接口有问题,后边的可以不执行。也比断言有问题最后还显示成功好吧,哈哈。不过这也是jmeter不完善的地方
4.one more thing
break可以结束脚本,那beanshell脚本的for循环或者switch中的break还是结束循环的作用吗?
yes,他们的break依旧生效
如图,既有多个for循环,又有switch,如果if里的break执行,则脚本结束,case的break执行,继续下一个循环,不会结束switch