之前判断接口类型和返回值用beanshell,可见JMeter(5)-JMeter之BeanShell使用

优化点

  1. 接口测试里面对返回字段的类型验证值验证为基本需求,将方法导成jar文件,导入之后方便每个断言可以调用。
  2. 补充对null类型、Array类型的判断

步骤

  1. 将判断方法打包成jar文件
    java项目打包成jar
    我的jar下载
  2. 导入jmeter项目中

     
     
  3. 判断接口返回字段值正确性(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(); //断言错误信息

运行结果

 
 
  1. 判断接口返回字段类型正确性(EqualsJsonType类)
    beanshell的调用代码如下
import com.susie.action.equals.EqualsJsonType;
String standardData = "{'uid':123,'phone':1,'has_password':true,'location':{'province':true,'city':'\u6c55\u5934\u5e02'},'cpma':null}";
EqualsJsonType equalsJson = new EqualsJsonType();
Failure = !equalsJson.respTypeAssertion(standardData, prev.getResponseDataAsString());
FailureMessage = equalsJson.getMessage();
  1. 格式化每个接口的字段断言
    将每个需要检查的字段(期望响应)直接用csv记录,每次比较直接读取进行比对无需一个个断言,非常方便~

     
     

    通过CSV Data Set Config读取,在beanshell中比较,调用方式与前面类似,获取标准响应

String standardDataShell = vars.get("standardData").toString();

注意: 读取csv中的json的时要注意json的逗号&双引号
在这里坑了许久,因为csv是以逗号区分不同列的数据,所以,要把json里面的逗号改称分号,双引号改称单引号;


如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

赞赏支持
 

接口自动化Jmeter

© 著作权归作者所有
举报文章

关注
susie酱

写了 12849 字,被 107 人关注,获得了 83 个喜欢

加油成为厉害的小仙女啊~

下载app生成长微博图片

更多分享


广告

-->

登录 后发表评论

 
 

失语失芯不失梦

2楼 · 2018.11.24 18:44

不是很明白 如果我想判断返回数据里面字段A的值类型对不对该怎么写呢?比如说定义的是字段A应该返回int型的值,但实际上返回的是string类型的值,这种断言我怎么写呢

回复

@失语失芯不失梦
在benshell里面写java脚本就可以验证。
思路是提取返回数据里字段A,得到A的类型,跟期望的类型比较。类型一致则断言成功;类型不一致则断言失败。
我这篇里面只是把比较的方法封装在jar包里面,方便每次都直接调用来判断而已。

2018.12.04 14:43 回复

封装后,每次只要输入一段期望值(json格式),脚本会从接口响应(json格式)里提取对应的字段,逐一判断

2018.12.04 14:45 回复

作者:susie酱
链接:https://www.jianshu.com/p/78df350d78e5
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。