附上 项目地址 https://github.com/AllenLuosong/autotest
├─api
│ └─client.py # API请求封装
├─config
│ └─config.yaml # 配置文件
├─log
│ └─YYYY-MM-DD.log # 日志文件
├─report
│ ├─data # allure测试结果数据
│ ├─html # allure报告
│ └─video # allure报告
├─test-result # 测试录屏结果输出路径
├─test_case
| |
| ├─API
| | ├─conftest.py # API测试初始化
| | └─test_api.py # 测试方法
| └─UI
| ├─conftest.py # UI测试初始化
| ├─test_case.yaml # UI测试案例,编写方法见文件说明
│ └─test_ui.py # 测试方法
|
├─tools # 工具包
│ ├─__init__.py # 常用方法封装
│ ├─data_process.py # 依赖数据处理
| ├─sql_operate.py # 数据库操作
| ├─email_send.py # 邮件发送
| ├─encode.py # 接口加解密
| ├─generate_data.py # 测试数据生成
| └─read_file.py # yaml文件获取封装
├─requirements.txt # 项目依赖库文件
└─main.py # 主启动文件
依赖安装 pip install -r requirements.txt
创建如下 mysql 库表用于管理 API 测试用例
CREATE TABLE `Api_test_detail` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`CaseNo` varchar(128) NOT NULL COMMENT '用例编号',
`Summary` varchar(128) NOT NULL COMMENT '用例概要描述',
`Domain` varchar(128) NOT NULL COMMENT '域名或IP地址',
`RquestHeader` varchar(128) DEFAULT NULL COMMENT '请求头',
`InterfacePath` varchar(128) NOT NULL COMMENT '接口地址',
`IsExecute` varchar(128) NOT NULL COMMENT '是否执行,Y是,N否',
`Encode` varchar(128) NOT NULL COMMENT '是否调用加密接口加密入参,Y是N否',
`MethodType` varchar(128) NOT NULL COMMENT '请求方法',
`ParamsType` varchar(128) NOT NULL COMMENT '参数类型',
`UploadFile` varchar(128) DEFAULT NULL COMMENT '上传的文件路径',
`Params` longtext COMMENT '用例入参',
`Sql` varchar(128) DEFAULT NULL COMMENT '断言的sql',
`extract` varchar(128) DEFAULT NULL COMMENT '要提取的参数,jsonpath格式',
`APIExpectResult` varchar(128) NOT NULL COMMENT '期望的api结果',
`SqlExpectResult` varchar(128) DEFAULT NULL COMMENT '期望的sql结果',
`add_time` datetime(6) NOT NULL COMMENT '创建时间',
`update_time` datetime(6) NOT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
编写 API 测试用例
测试用例使用数据库维护,需要配合测试平台使用,详见测试管理平台的使用
UI 编写 UI 测试用例
UI 测试用例编写指南
按照如下规范编写, 以关键字驱动测试执行
用例命名,为便于管理及美观整洁建议统一命名,如xxx(project)-xxx(mudule)-test001
descrption(用例描述)
test_step(测试步骤) 编写样例 test_step: { "open": "https://www.jd.com/",
"click1": "id=msShortcutLogin",
"fill1": {"selector": "#sb_form_q", "value": "test_account20221212"},
"swipe": {"x": 500, y: 800}
"sleep": 3000
}
支持的关键字有open(打开url), click1(点击事件,1则代表第一次点击,同理click2代表该测试用例中的第二次点击)
sleep(显式等待,使用毫秒),fill1(文本填充事件,需传入两个键值对,一个填充的元素对象,一个填充的值。数字1的用法与click1一致)
swipe(页面滑动事件)
expect_result(期望结果) 编写样例 { "descrption": "期望页面"#header > span.text-header"元素的文案是'京东登录注册'",
"selector": "#header > span.text-header",
"value": "京东登录注册"
}
启用 docker 执行 API 自动化测试工具,执行 docker-compose up
开始构建并运行
(非 docker 部署方式可以执行 python main.py
)