- 介绍一下你的自动化项目框架。
参考回答:在介绍自动化框架的时候 技术+细节
我在这个项目中主要使用的技术是基于Python+Requests+pytest+yaml(json/csv/excel)+logging+allure 这些技术实现。
实现的功能:
- 日志功能: 使用logging模块封装日志,以及结合requests库实现请求的时候自动进行记录请求的数据和返回的结果。主要目的是为了程序出现请求错误的时候可以通过日志快速定位问题。
- json 数据驱动:在进行单接口测试的时候,将测试数据存放在json文件中,通过读取json文件实现数据驱动。
- 接口串联处理:接口之间存在上下游关联的时候,主要使用类变量的方式将接口上游返回结果设置类变量的值,下游接口中通过类变量的方式来引用上游的参数,实现上下游传参。
- pytest维护测试用例:将不同功能的测试用例放在不同的目录中,运行的时候可以指定运行不同目录。如果有运行时的控制,通过创建conftest.py 文件进行数据配置。
- 添加断言的时候,除了常规的assert 进行断言,使用jsonschema 进行整体数据格式模板的校验。
- 使用allure 测试报告框架:报告通过安装pytest-allure 生成报告。
项目的主要结构:
utils 封装常用工具mylogger.py 封装日志模块myrequests.py 封装发送请求testcases 存放所有的测试用例test_ddt 单元测试 使用数据驱动方式测试test_process 流程相关 上下游传参logs 存放日志文件datafiles 存放json 测试数据文件reports 存放测试报告
- 如果你的测试用例很多,怎么进行维护。
如果用例很多,可以根据用例的功能模块进行划分,不同的功能放在不同的文件中,运行的时候可以通过使用pytest -k 参数 指定运行。
也可以给不同的用例通过pytest.mark 功能添加不同的标签。运行的时候通过pytest -m 参数指定标签运行。
- 上下游传参怎么做?
可以使用三种方式来做:
- 使用类变量进行传参
- 使用字典格式的数据进行传参
- 使用pytest.fixture功能进行传参。
- 参数化怎么处理?
主要使用pytest中的 parametize 功能进行参数化,
使用的时候也可将数据存放在文件中(json/csv),通过读取文件获取文件中的数据进行参数。@pytest.mark.parametrize("data",testdata)
