开源测试工具 Python 断言工具包 assertP

知無涯 · 2022年01月09日 · 2420 次阅读

简介

对于经常借助于使用自动化手段测试的同学来说,无论使用接口自动化工具,还是自研的测试框架,一个完整的自动化用例,断言部分绝对是重中之重,因为断言的颗粒度在一定程度上能反映用例质量,必然断言颗粒度越细,越可能发现问题,对于接口测试来说,接口返回结果断言是必须的,但是这还不够,更建议对落库的数据与接口的 request 中重要字段进行断言, 而断言实质也是数据之间的比较,例如相等、包含、非空等。
今天介绍的 Python 库 assertP 就是这样一个方便测试同学高效断言的工具,测试同学直接将数据库取出的数据作为实际结果 与 预期结果进行比较。它支持相等断言、包含断言、非空断言、JSON 断言,具体使用方法介绍如下。
pip install assertP

实践
结合数据库做断言。首先,新建一个测试表 al_pay,造几条数据。

-- Create Table
CREATE TABLE
al_pay(
idint(11) unsigned NOT NULL AUTO_INCREMENT,
user_idvarchar(11) COLLATE utf8mb4_bin DEFAULT NULL,
pay_statusvarchar(11) COLLATE utf8mb4_bin DEFAULT NULL,
pay_amountint(11) DEFAULT NULL,
pay_curvarchar(11) COLLATE utf8mb4_bin DEFAULT NULL,
order_idvarchar(30) COLLATE utf8mb4_bin NOT NULL DEFAULT '',
extvarchar(200) COLLATE utf8mb4_bin DEFAULT NULL,
PRIMARY KEY (
id)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

  1. 测试代码: import pymysql from 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()

2.包含关系断言

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)

3.JSON 断言

act = {'ext': '{"user_name": "QA", "currency": "RMB"}'}
exp = {'ext': 'JSON:{"user_name": "QA", "currency": "USD"}'}
AssertPy(tName, act, exp)

  1. 多条数据断言 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

开源地址:http://testerhome.com/opensource_projects/190

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