之前判断接口类型和返回值用beanshell,可见JMeter(5)-JMeter之BeanShell使用
优化点
- 接口测试里面对返回字段的类型验证和值验证为基本需求,将方法导成jar文件,导入之后方便每个断言可以调用。
- 补充对null类型、Array类型的判断
步骤
- 将判断方法打包成jar文件
java项目打包成jar
我的jar下载 -
导入jmeter项目中
- 判断接口返回字段值正确性(EqualsJsonValue类)
beanshell的调用代码如下
import com.susie.action.equals.EqualsJsonValue;
String standardData = "{'uid':123,'phone':1,'has_password':true,'location':{'province':true,'city':'123'},'cpma':1}";
EqualsJsonValue equalsValue = new EqualsJsonValue();
Failure = !equalsValue.respValueAssertion(standardData, prev.getResponseDataAsString()); //断言结果
FailureMessage = equalsValue.getMessage(); //断言错误信息
运行结果
- 判断接口返回字段类型正确性(EqualsJsonType类)
beanshell的调用代码如下
import com.susie.action.equals.EqualsJsonType;
String standardData = "{'uid':123,'phone':1,'has_password':true,'location':{'province':true,'city':'u6c55u5934u5e02'},'cpma':null}";
EqualsJsonType equalsJson = new EqualsJsonType();
Failure = !equalsJson.respTypeAssertion(standardData, prev.getResponseDataAsString());
FailureMessage = equalsJson.getMessage();
-
格式化每个接口的字段断言
将每个需要检查的字段(期望响应)直接用csv记录,每次比较直接读取进行比对无需一个个断言,非常方便~
通过CSV Data Set Config读取,在beanshell中比较,调用方式与前面类似,获取标准响应
String standardDataShell = vars.get("standardData").toString();
注意: 读取csv中的json的时要注意json的逗号&双引号
在这里坑了许久,因为csv是以逗号区分不同列的数据,所以,要把json里面的逗号改称分号,双引号改称单引号;
如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!
赞赏支持
作者:susie酱
链接:https://www.jianshu.com/p/78df350d78e5
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
不是很明白 如果我想判断返回数据里面字段A的值类型对不对该怎么写呢?比如说定义的是字段A应该返回int型的值,但实际上返回的是string类型的值,这种断言我怎么写呢
在benshell里面写java脚本就可以验证。
思路是提取返回数据里字段A,得到A的类型,跟期望的类型比较。类型一致则断言成功;类型不一致则断言失败。
我这篇里面只是把比较的方法封装在jar包里面,方便每次都直接调用来判断而已。