
设计接口自动化框架需要考虑测试用例存储的方式。在实际项目中,测试用例存储的方式有多种,可以存放在 Excel 表格中,也可以存放于 Yaml 文件中,而最好的方式是存放在 MySQL 数据库中,原因有几点:
● 现在 Docker 技术流行,可以通过 Docker 拉取镜像直接安装 MySQL,用于存放测试用例。
●Python 利用 PyMySQL 库可以很好地与 MySQL 数据库进行交互。
● 只要熟悉SQL 语句,就可以随时存储和读取测试用例的内容。
● 使用 MySQL 数据库存储测试用例便于后续的测试平台的开发。
因此,本文将采用 MySQL 数据库来存储测试用例。
建立数据库实例
使用数据库存放测试用例需要建立新的数据库实例,请先安装MySQL 数据库系统。在此基础上,需要通过Navicat 客户端连接 MySQL 数据库,新建一个数据库实例便可。步骤如下。
(1)通过 Navicat 客户端连接 MySQL 数据库系统,用户名为 root,密码为123456,数据库的端口号为 33506,IP 地址为 192.168.47.128,如图1所示。

■ 图1 连接 MySQL 数据库系统
(2)MySQL 数据库连接成功后,新建数据库实例,如图2所示。

■ 图2 新建数据库实例
(3)输入数据库实例的名称,并选择字符集和排序规则,如图3所示。

■ 图3 输入数据库实例名称
(4)单击“确定”按钮,便可新建成功,如图4所示。

■ 图4 数据库实例新建成功
建立主测试用例表
根据 手把手带你设计接口自动化测试用例(二):根据接口信息设计测试用例 中设计的主测试用例的字段来建立主测试用例表,此表主要用来存放主测试用例的内容,命名为test_case_list。接下来通过 CREATE TABLE 语句建立此表,并通过 INSERT INTO 语法向表中插入上篇文章中设计的 11 个测试用例的内容。
1)在 test 数据库实例中创建 test_case_list 表
通过 CREATE TABLE 语句创建 test_case_list 表,建表语句如例 1 所示。
【例1】创建 test_case_list 表。
CREATE TABLE `test_case_list` (
# 测试用例的编号,不为空,自增长
`id` int(0) NOT NULL AUTO_INCREMENT,
# 项目名称
`web` varchar(255) DEFAULT NULL,
# 项目模块
`module` varchar(255) DEFAULT NULL,
# 测试用例的标题
`title` varchar(255) DEFAULT NULL,
# 接口地址的路径
`url` varchar(255) DEFAULT NULL,
# 请求方法
`method` varchar(255) DEFAULT NULL,
# 请求头
`headers` varchar(255) DEFAULT NULL,
# cookies 秘钥
`cookies` varchar(1000) DEFAULT NULL,
# 请求主体信息
`request_body` varchar(1000) DEFAULT NULL,
# 请求主体的数据类型
`request_type` varchar(255) DEFAULT NULL,
# 关联
`relation` varchar(255) DEFAULT NULL,
# 预期业务状态码
`expected_code` varchar(255) DEFAULT NULL COMMENT ' 作为
断言标准 ',
# 测试用例是否可运行
`isdel` int(0) NULL DEFAULT 1 COMMENT '0 为删除,1 为正常 ',
# 设置 id 为主键
PRIMARY KEY (`id`) USING BTREE
# 设置表的引擎为 InnoDB
) ENGINE = InnoDB ;
2)展示 test_case_list 表名和字段
通过 Navicat 客户端将 test_case_list 表创建成功之后,表的名称和字段的信息展示如图5所示。

■ 图5 test_case_list 表名及字段信息
3)向 test_case_list 表插入测试用例的内容
test_case_list 表创建成功之后,可以通过 INSERT INTO 语法向表中插入手把手带你设计接口自动化测试用例(二):根据接口信息设计测试用例中设计的 11 个测试用例的内容,插入语句如例 2 所示。
【例 2】向 test_case_list 表中插入测试用例的内容。
# 插入第一条测试用例
INSERT INTO `test_case_list` VALUES (1, 'zrlog', '登录模块',
' 密码错误 ', '/api/admin/login', 'post', '{\"Content-Type\":
\"application/json\"}', '{}', '{\"userName\":\"admin\",\
"password\":123456,\"https\":False,\"key\":1598188173501}',
'json', NULL, '1', 1);
# 插入第二条测试用例
INSERT INTO `test_case_list` VALUES (2, 'zrlog', ' 登录模
块 ', ' 不携带密码参数 ', '/api/admin/login', 'post', '{\"Content
Type\": \"application/json\"}', '{}', '{\"userName\":\"admin
\",\"https\":False,\"key\":1598188173501}', 'json', NULL,
'1', 1);
# 插入第三条测试用例
INSERT INTO `test_case_list` VALUES (3, 'zrlog', '登录模块',
' 用户名错误 ', '/api/admin/login', 'post', '{\"Content-Type\":
\"application/json\"}', '{}', '{\"userName\":\"adminadminadmin
admin\",\"password\":\"ca72de92e7e1767aefe5853a282836e7\",\
"https\":False,\"key\":1598188173501}', 'json', NULL, '1', 1);
# 插入第四条测试用例
INSERT INTO `test_case_list` VALUES (4, 'zrlog', '登录模块',
' 用户名为非字符串类型 ', '/api/admin/login', 'post', '{\"Content
Type\": \"application/json\"}', '{}', '{\"userName\":123456,\
"password\":\"ca72de92e7e1767aefe5853a282836e7\",\"https\":
False,\"key\":1598188173501}', 'json', NULL, '1', 1);
# 插入第五条测试用例
INSERT INTO `test_case_list` VALUES (5, 'zrlog', ' 登录模块 ',
' 不携带用户名参数 ', '/api/admin/login', 'post', '{\"Content
Type\": \"application/json\"}', '{}', '{\"password\":\
"ca72de92e7e1767aefe5853a282836e7\", \"https\":False,\
"key\":1598188173501}', 'json', NULL, '1', 1);
# 插入第六条测试用例
INSERT INTO `test_case_list` VALUES (6, 'zrlog', '登录模块',
' 用 户 名 为空 字 符 串 ', '/api/admin/login', 'post', '{\"Content
Type\": \"application/json\"}', '{}', '{\"userName\":\"\",\
"password\":\"ca72de92e7e1767aefe5853a282836e7\",\"https\":
False,\"key\":1598188173501}', 'json', NULL, '1', 1);
# 插入第七条测试用例
INSERT INTO `test_case_list` VALUES (7, 'zrlog', '登录模块',
' 用 户 名 和密 码 正 确 ', '/api/admin/login', 'post', '{\"Content
Type\": \"application/json\"}', '{}', '{\"userName\":\"admin\",
\"password\":\"ca72de92e7e1767aefe5853a282836e7\",\"https\":
False,\"key\":1598188173501}', 'json', 'token=cookies.admin
token', '0', 1);
# 插入第八条测试用例
INSERT INTO `test_case_list` VALUES (8, 'zrlog', ' 文章管
理模块 ', ' 发布文章 ', '/api/admin/article/create', 'post',
'{\"Content-Type\": \"application/json\"}', '{\"admin
token\":\"${token}\"}', '{\"id\":None,\"editorType\":\"m
arkdown\",\"title\":\" 付 出 \",\"alias\":\" 付 出 \",\"thumbnail
\":None,\"typeId\":\"1\",\"keywords\":None,\"digest\":None,
\"canComment\":False,\"recommended\":False,\"privacy\":
False,\"content\":\"<p> 付 出 </p>\\n\",\"markdown\":\" 付
出 \",\"rubbish\":False}', 'json', 'id_name=body.id,alias_
name=body.alias', '0', 1);
# 插入第九条测试用例
INSERT INTO `test_case_list` VALUES (9, 'zrlog', ' 文章管
理模块 ', ' 修改文章 ', '/api/admin/article/update', 'post',
'{\"Content-Type\": \"application/json\"}', '{\"admin
token\":\"${token}\"}', '{\"id\":\"${id_name}\",\"editorType\
":\"markdown\",\"title\":\" 付出才能杰出 \",\"alias\":\"${alias_
name}\",\"thumbnail\":None,\"typeId\":\"1\",\"keywords\":
None,\"digest\":\"<p> 付 出 </p>\",\"canComment\":False,\"recom
mended\":False,\"privacy\":False,\"content\":\"<p> 付 出 </p>\\
n\",\"markdown\":\" 付 出 \",\"rubbish\":False}', 'json', NULL,
'0', 1);
# 插入第十条测试用例
INSERT INTO `test_case_list` VALUES (10, 'zrlog', ' 文章
管理模块 ', ' 删除文章 ', '/api/admin/article/delete', 'post',
'{\"Content-Type\": \"application/x-www-form-urlencoded\"}',
'{\"admin-token\":\"${token}\"}', '{\"oper\":\"del\",\"id\":\
"${id_name}\"}', 'data', NULL, '0', 1);
# 插入第十一条测试用例
INSERT INTO `test_case_list` VALUES (11, 'zrlog', ' 文 章
管理模块 ', ' 查询文章 ', '/api/admin/article?keywords= 付出才
能杰出 &_search=false&nd=1598429806679&rows=10&page=1&sidx=
&sord=asc', 'get', '{\"Content-Type\": \"application/x-www
form-urlencoded\"}', '{\"admin-token\":\"${token}\"}', '{}',
'data', NULL, '0', 1);
4)展示 test_case_list 全表的内容
通过 Navicat 客户端工具执行 INSERT INTO 语句后,test_case_list 全表的内容如图6、图 7所示。

■ 图6 test_case_list 全表的内容(1)

■ 图7 test_case_list 全表的内容(2)
参考书籍
《接口自动化测试项目实战:Python 3.8+Requests+PyMySQL+pyte》
ISBN:9787302593751
作者:江楚
定价:59元

扫码优惠购买

精彩推荐
手把手教你设计接口自动化测试用例:根据接口信息设计测试用例 Python编程|实现基于字典的通讯录 CCF CSP-J/S第一轮认证必考知识点:贪心算法 CCF CSP-J/S第一轮认证必考知识点:回溯算法 CCF CSP-J/S第一轮认证必考知识点:二值图像的最大连通块 CCF CSP-J/S第一轮认证必考知识点:哥德巴赫猜想 CCF CSP-J/S第一轮认证考纲详解 Python 韩信点兵思政案例(含优惠码) 机器学习案例︱人脸识别和人脸检测(附视频) Python ︱爬取天气预报信息(附视频) 《机器学习》实验指导书(附实验参考+代码) Python爬虫综合实战 │ 创建云起书院爬虫(附代码) Python爬虫实战 │ Email提醒(附代码) Python深度学习 │一文掌握卷积神经网络






