很多时候我们需要把Response Data取到的 Json 字符串跟数据库里的对比,来验证接口的正确性,使用Beanshell断言可以比较灵活的实现这个需求。
Beanshell是一种类似JAVA的脚本语言,可以直接调用外部的jar包,可以拿现成的json解析包来用,所以笔者选择了这个方法。实现的思路是
1、历史数据存储到MYSQL数据库里,
2、Jmeter读取参数化的CSV文件,把测试用例都存入CSV文件一次执行,
3、CSV文件和数据库中数据用ID关联,
4、每次断言都用BeanShell使用JDBC连接MYSQL库,使用测试用例的ID查出MYSQL中的数据
5、调用GSON的解析JSON方法,对比两个数据,进行断言
BeanShell在Jmeter中的使用可以参考这篇文章,https://www.blazemeter.com/blog/queen-jmeters-built-componentshow-use-beanshell 在这里就不多做介绍了。
GSON是Google的一个解析JSON的工具,笔者不太懂java,但是JSON字符串的对比不能直接用字符串比较,所以引用了这个包,然后调用了GSON的JsonObject.equals()方法,来判断两个JSON的内容是否一样。大家可以多研究下,最好能完成例如断言失败时打印内容不同的KEY等功能。
一、在Jmeter中添加BeanShell断言