前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

简介

作者头像
互联网金融打杂
发布2022-07-28 09:29:16
5690
发布2022-07-28 09:29:16
举报
文章被收录于专栏:测试开发架构之路

简介

对于经常借助于使用自动化手段测试的同学来说,无论使用接口自动化工具,还是自研的测试框架,一个完整的自动化用例,断言部分绝对是重中之重,因为断言的颗粒度在一定程度上能反映用例质量,必然断言颗粒度越细,越可能发现问题,对于接口测试来说,接口返回结果断言是必须的,但是这还不够,更建议对落库的数据与接口的request中重要字段进行断言, 而断言实质也是数据之间的比较,例如相等、包含、非空等。

今天介绍的Python库assertP就是这样一个方便测试同学高效断言的工具,测试同学直接将数据库取出的数据作为实际结果 与 预期结果进行比较。它支持相等断言、包含断言、非空断言、JSON断言,具体使用方法介绍如下。

代码语言:javascript
复制
pip install assertP

实践

  1. 结合数据库做断言。首先,新建一个测试表al_pay,造几条数据。
代码语言:javascript
复制
-- Create Table CREATE TABLE `al_pay` (  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,  `user_id` varchar(11) COLLATE utf8mb4_bin DEFAULT NULL,  `pay_status` varchar(11) COLLATE utf8mb4_bin DEFAULT NULL,  `pay_amount` int(11) DEFAULT NULL,  `pay_cur` varchar(11) COLLATE utf8mb4_bin DEFAULT NULL,  `order_id` varchar(30) COLLATE utf8mb4_bin NOT NULL DEFAULT '',  `ext` varchar(200) COLLATE utf8mb4_bin DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

测试代码:

代码语言:javascript
复制
import pymysqlfrom assertP import AssertPy_multi, AssertPy# 连接数据库, 和mysql服务端设置格式一样(还可设置为gbk, gb2312)conn = pymysql.connect(host="localhost", user="root", passwd="123456", db='article', charset='utf8',                       port=3306)cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)​# 执行sql语句select_sql = "select order_id, user_id, pay_status, pay_amount from al_pay where order_id=%s;"cursor.execute(select_sql, ("2022010818343700000002",))​act = cursor.fetchall()[0]exp = {'order_id': '2022010818343700000001', 'user_id': '20210100002', 'pay_status': 'CLOSED'}# 断言AssertPy('al_pay', act, exp)conn.commit()cursor.close()conn.close()
  1. 包含关系断言
代码语言:javascript
复制
act = {'pay_amount': "2000", 'pay_cur': 'RMB',           'order_id': '2022010818343700000001', 'ext': '{"user_name": "QA", "currency": "RMB"}'}exp = {'pay_amount': "CONTAINS_CHECK:2000", 'pay_cur': 'RMB',           'order_id': '2022010818343700000001', 'ext': '{"user_name": "QA", "currency": "RMB"}'}AssertPy(tName, act, exp)
代码语言:javascript
复制
  1. JSON断言
代码语言:javascript
复制
act = {'ext': '{"user_name": "QA", "currency": "RMB"}'}exp = {'ext': 'JSON:{"user_name": "QA", "currency": "USD"}'}AssertPy(tName, act, exp)
  1. 多条数据断言
代码语言:javascript
复制
     tName = "TestTable"        act = [{'order_id': '2022010818343700000003', 'user_id': '20210100002', 'pay_status': 'PAYING'},               {'order_id': '2022010818343700000003', 'user_id': '20210100001', 'pay_status': 'SUCCESS'}]        exp = [{'order_id': '2022010818343700000003', 'user_id': '20210100002', 'pay_status': 'PAYING'},               {'order_id': '2022010818343700000003', 'user_id': '20210100001', 'pay_status': 'SUCCESS'}]        AssertPy_multi(tName, act, exp)

更多断言类型,扩展中。。。

assertP:https://pypi.org/project/assertP/

Selquel pro:www.sequelpro.com/

Python texttable:https://pypi.org/project/texttable/

PyMySQL:https://pypi.org/project/PyMySQL/

logging:https://docs.python.org/3/library/logging.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
    • 实践
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档