接口测试 接口自动化,测试管理系统查询一类的功能时,有什么好的方法吗

WayJarHow · 2020年12月07日 · 最后由 小狄子 回复于 2021年02月21日 · 287 次阅读

对于查询功能的接口,想问一下如何断言,返回值和数据库中的数据进行比对吗? 数据量大,如何比对呢。或者新增一条数据,与新增的数据进行比对就行?

共收到 14 条回复 时间 点赞

可以用列表差集方式比对

用相同的查询条件去查数据库,和接口响应的 total 字段作比对

1,数据的断言,一般有三种数据基准的:第一种是直接断言该接口返回的数据是否准确,第二种是断言该接口返回的数据和数据库对应的表数据是否一致,第三种是断言该接口返回的数据和其他有关联接口的入参/返参是否一致。
2,至于你要怎么断言,要看你借助测试的工具,如果是 unittest 就用 self.assertEqual 断言,如果是 postman 就在 Tests 里用 pm.test,如果是 jmeter 就直接用 Beanshell 脚本更合理(java 语言兼容性更好)

cheunghr 回复

查询条件需要进行组合么 还是任意挑选一种查询条件

Test44 回复

与数据库比较需要将所有数据都比较吗 还是比较最新的一条数据就行

fiskeryang 回复

不是很理解这个方式

WayJarHow 回复

{
"message": "操作成功",
"status": 200,
"count": 2,
"data": [
{
"page": 1,
"rows": 10,
"id": 23,
"question": "商品期权权利方平仓凭证中,作为贷方的科目有 ()(0.5 分)",
"options": "A、 差价收入 B、 交易费用 C、 证券清算款 D、 其他衍生工具_商品期权",
"answer": "标准答案:A",
"questiontype": "单选题"
},
{
"page": 1,
"rows": 10,
"id": 2004,
"question": "商品期权中,义务方认购行权实际理解为 ()(0.5 分)",
"options": "A、 期权增加,期货空头增加 B、 期权减少,期货空头增加 C、 期权减少,期货多头增加 D、 期权增加,期货多头增加",
"answer": "标准答案:B",
"questiontype": "单选题"
}
]
}

假如接口返回数据是这样,可以把 data 提取出来,去除不用比对的字段后保存为一个列表。
期望值也做成一个列表,比较两个列表的差集

同意 7 楼

其实还是看你查询条件(可能参数会很多),比如说查询功能有个参数是对时间进行排序的,要测这个参数,其实就应该将返回结果中时间参数提出来,转成时间戳,比一下大小;

WayJarHow 回复

根据你接口的查询条件返回的数据,再在数据库用同样的查询条件查数据,先做数据统计,再对比。
数据断言是接口测试最基础的一项,后续你还会遇到很多不同格式或者是无法直接获取的数据,都是需要你先对数据做处理统计分层后,再断言的。加油兄弟,像我这种菜,都是靠自己一步步从对接口测试啥也不懂摸索到自己能正常封装框架的。

https://testerhome.com/topics/25330
前段时间发过这个思路,可以参考一下

cheunghr 回复

不光是检查 total,一般来说还希望接口返回的内容和数据库查询的条目能够不重不漏(既要确保数量一致,又要保证接口返回的各个条目在数据库查询结果集中均存在)

小狄子 回复

哈哈,我认为对于列表型接口,检查数量效率高点,主要考察后端查询条件是否和预期是否一致,字段一般都由表数据到实体类映射。当然详细比较可靠性更强,结果更稳定准确。但校验各字段我通常放在详情类接口进行

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册