Jmeter中将API返回值与数据库查询值进行比对断言操作

Posted FelixNi测试总结分享

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jmeter中将API返回值与数据库查询值进行比对断言操作相关的知识,希望对你有一定的参考价值。

咱先说个工作中的小段子:

前端同学:测试同学,你们API是怎么测试的啊?劳资从接口中拿到的状态值,页面逻辑都不对?

测试同学:一脸懵逼,心里想code不都返回200了嘛,哪里还有问题啊?


相信很多初中级测试同学可能都碰到过,那怎么做断言验证是高效准确的?今天笔者围绕jmeter接口测试分享利用BeanShell断言:将API返回值与数据库查询值进行比对断言操作


一、首先配置Jmeter连接Mysql数据库

mysql官网下载mysql-connector-java-bin.jar,我这边下载了5.1.46版本:

链接: https://pan.baidu.com/s/1fW76mABU0mh4NkXJEC-zTQ 密码: 6miq 


1.1在Jmeter中配置JDBC Connection Configuration


1.2JDBC Request请求:

Jmeter中将API返回值与数据库查询值进行比对断言操作


1.3将已经下载的jdbc驱动加载到Jmeter工具中,这样就使得mysql与Jmeter连接起来。选择 测试计划 — 进入页面,点击 浏览按钮,如图所示

Jmeter中将API返回值与数据库查询值进行比对断言操作


1.4点击绿色箭头进行脚本运行,查看结果树得到我们的SQL值

至此,jmeter链接数据库已经完成了


二、利用BeanShell断言进行验证

2.1API返回值中的字段值可以通过正则表达式提取器进行提取 


2.2将数据库中查询到的值以变量的形式命名(假设a),下次该值就可以通过$a_1获取到。那如何比对?附上代码:

if (!"${identifyCode}".equals("${validate_code_1}")) {

    Failure = true;

    FailureMessage = "error,check error";

} else {

    FailureMessage = "ok,check current";

代码说明:identifyCode是我正则表达式提取出来的值引用的变量

                  validate_code_1是我通过SQL语句查询到的值引用的变量


只有当API返回的值与数据库查询到的值一致时,才认为当前case是pass否则为Fail。

至此,分享完毕,如有问题与疑问,欢迎在下方留言。

以上是关于Jmeter中将API返回值与数据库查询值进行比对断言操作的主要内容,如果未能解决你的问题,请参考以下文章

jmeter 多行数据比对(无序);

如何在python中将输入值与mysql数据库值进行比较

Jmeter-BeanShell断言的运用一(JSON响应数据与数据库比对)

Jmeter接口测试通过SQL查询进行数据校验

返回查询的所有行,其中一列中的字符串值与另一列中的字符串值匹配

beanshell断言比对数据库数据是不是一致是不是有日志