使用分享|MeterSphere SQL数据库查询校验操作指南

发布于 2021年03月18日

以下文章来源于Bruce小鬼的CSDN博客:https://blog.csdn.net/m0_38039437/article/details/110133647。

使用MeterSphere做接口自动化测试是一件非常愉快的事情,提供的功能也非常强大。下面我们就来说说如何在MeterSphere平台中使用数据库展开业务测试吧。

MeterSphere添加MySQL数据源

1. 在场景中打开环境配置

2. 在环境配置页面新增jdbc数据库

3. 测试数据库是否可以连通

发送SQL请求并进行业务断言

配置好数据库,我们就可以发起SQL查询请求了。在这里我们做个小的Demo演示如何使用查询结果数据来断言我们业务测试结果的成功与失败。

1. 发送SQL查询请求

2. 查询结果断言业务成功与否

我们判断查询数据库结果中是否有一条Type字段为1的数据。如果存在则创建用户成功,如果没有则为失败。

2-1 新增脚本类型断言

2-2 脚本完整代码

// ${type_1}表示取出type字段中第一条数据,取第几条数据角标写对应数字即可。if(${type_1}==1){    AssertionResult.setFailure(false);    log.info("=====创建用户成功=====");}else{    AssertionResult.setFailure(true);    log.info("=====创建用户失败=====");}

2-3 执行SQL查询结果

从断言结果中可以看到,我们创建用户业务已经成功。

3. 引用数据库返回结果做断言遇到的问题及解决方式

3-1 描述我们的需求

从查询结果中拿到Type列的第一条数据,然后判断第一条数据Type字段的值是否为1,如果为1就让断言成功。否则就让断言失败。

3-2 编写查询SQL语句

SELECT * from user where phone='13700000099';

3-3 提取Type列数据作为断言变量

这里需要先说明下提取结果中存储结果和按列存储两种方式区别。

3-4 这里是我们执行查询返回的数据

3-5 断言脚本

取出查询结果Type为1的这条数据,然后判断是否等于1。

// ${type_1}表示取出type字段中第一条数据,取第几条数据角标写对应数字即可。if(${type_1}==1){    AssertionResult.setFailure(false);    log.info("=====创建用户成功=====");}else{    AssertionResult.setFailure(true);    log.info("=====创建用户失败=====");}

发现断言总是失败,然后查看日志发现${type_1}取值的时候报空指针异常。

这里为什么会报空指针异常错误?我们查询返回的结果是没有问题的,里面有一条数据,但是在取第一条数据Type字段值的时候没有取到这个值导致报出异常。通过多次尝试,原来问题的原因是——对按列存储理解有错误导致出现上面的问题。

3-6 按列存储正确使用方式

按列存储是根据查询返回结果字段从左到右的顺序才能取到我们需要指定字段里面的值,不是我们写个Type名称就对应返回结果中Type字段的数据。示例如下:

上图中Type列在返回结果中第三列,我们现在要取出Type列的数据。按列存储填写方式如下,这样Type取出的值才是查询返回结果中第三列Type字段的值。

上面返回的查询结果列数非常多。这个时候我们要取最后一列数据,那么前面每列的名称都要写出来。那是多么麻烦的事情呀,不符合用代码做事的风格。

注:这个时候就可以用逗号作为占位符代替列名,只有需要提取列名称上的数据才写列名即可。

————————————————
版权声明:本文为CSDN博主「Bruce小鬼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。