Jmeter有很多种断言方法,针对我们对数字A=B+C等算术的断言场景,我们介绍json assertion,response assertion和beanshell assertion的3种常见方法的使用。
场景:
用户1之前有B个license,然后用户1又购买了C个license。我们需要校验用户1购买的license数是正确的。
Json assertion方法:
- 在购买license之前通过用户license信息接口1获取其license的数量(即B),我们将其命名为pre_licenceQuantityPurchased
- 在购买license的接口2使用变量(即C)Register_Num做为传参。
- 购买成功后再次通过用户license信息接口1获取其license的数量(即A),我们使用json path获取其值。首先校验其json path存在,然后校验其值。在校验值的时候,使用了jmeter中的__longSum()函数。使用方法如下:${__longSum(${pre_licenceQuantityPurchased},${Register_Num})}
response assertion方法:
response assertion方法和Json assertion方法思路类似,不同的是购买后需要使用后置处理器将license数取出来并命名,然后在response assertion中选择JMeter Variable Name to use来对比${__longSum(${pre_licenceQuantityPurchased},${Register_Num})}的值是否相等。
BeanShell Assertion方法:
- 使用jmeter内置函数vars.get()将之前取样器的变量取出来,这里要注意变量的类型,不然脚本跑不过。
- 取出来的pre_num的类型是string类型,这时需要使用函数Integer.parseInt()将string类型转换成int类型,转换后做算术运算。
- 最后用if做判断,前后值相等,Failure赋值为false,断言通过。