——api_keyword / api_key.py:
class ApiKey:get、post、get_text、sql_check、jsonDeepDiff
——Common:encryptAes.py和encryptRsa.py
——Common / FileDataDriver.py:
class FileReader:
readExcelToDict
writeDataToExcel
readYaml
wirteYaml
replace_variable_references
data_encryptAes
——data / Excel Yaml
——log / log.log
——report_allure
——result
——testcase
- 读取所有数据 readExcelToDict()
- 实例化ApiKey对象
- 生成对应标题 __dynamic_title()
- 解决url带参数问题,@数据加密问题,然后发送请求得到响应
- 进行响应数据的断言处理,提取数据__json_extraction(),响应全量断言
- 数据库进行断言操作
- 数据库进行数据提取
- 结果写入到result中
——config.py 全局变量维护
URL,excel路径,msg提示信息,数据库连接信息,密钥
——conftest.py
token_fix()
pytest_runtest_makereport()
——pytest.ini
框架描述:
框架包含的模块:总
1. 报告层【report / result】:Allure
2. 封装层:
- 关键字:key_word,ApiKey:
- 公共方法【Common】:加密 / 解密,数据驱动(文件读写)
3.测试用例层【testcase】:用例解析
4. 控制层【main_run.py】:失败重跑,冒烟,跳过,报告生成
5. 数据层【data】
6. 数据源:Mysql,Yaml,Excel
7. 配置层【config.py】:维护全局变量
每个模块对应的功能:分
1. 报告层:底层基于Allure进行封装集成,具备用例执行结果统计、日志收集、接口参数抓取等功能。
【亮点】:统计、数据(可读性高)、目录结构也比较清晰、需要的内容齐全-- 给别人看
2. 封装层:底层基于Requests,应用关键字驱动以及数据驱动模式,进行了封装。封装了接口请求方法、报文解析、数据库断言、接口加解密等项目落地过程中接口的常见操作。
【亮点】:
1)封装了数据库查询方法,只需要传入sql即可获得结果,不需要重复编写大量数据库连接代码;
2)同时进行请求数据的处理,比如请求数据进行加密/解密的方法封装,通过参数@来进行标识。
3)同时引入DeepDiff库,实现全字段断言。(同时你可以忽略顺序、忽略大小写、忽略某个字段、忽略类型)
3. 测试用例层:引用已封装好的关键字,集成Excel/Yaml作为用例编写入口,所以后期测试人员只需要,维护Excel或者Yaml即可。
【亮点】:通过Excel或Yaml可编写用例,降低框架用例编写难度,Excel以及Yaml实现了多接口多字段关联、数据库断言、数据库sql和接口参数关联等功能。(模板升级:之前excel是元组通过下标去获取, 我通过key去获取;之前的模板可读性差,不知道要怎么去进行维护,我这边加一个备注说明:方面后 面测试阅读)
4. 控制层:底层基于Pytest,实现了用例分组排序、失败重跑、用例跳过(False)、前置后置等功能
【亮点】:失败重跑、用例分组执行等等。
5. 数据层:Excel/Yaml/MySQL
6. 配置层:配置全局变量及环境变量
框架实现的效果:
只需要测试人员维护对应的excel,就能实现自动化运行,结合Jenkins