Pytest-集成Requests与Allure搭建接口自动化框架

Pytest-集成Requests与Allure搭建接口自动化框架
怀光1. 项目目录结构
在正式开始之前,先了解一下整个项目的目录结构,这样更容易理解代码的组织方式。完整的接口自动化测试框架目录结构如下:
1 | ./pytest_api_testing_framework |
2. 准备工作
在开始编写代码之前,首先需要安装一些必要的依赖:
1 | pip install requests pytest allure-pytest configparser loguru curlify |
requests
:用于发送HTTP请求。pytest
:用于编写和运行测试用例。allure-pytest
:用于生成Allure报告。configparser
:用于读取配置文件,支持多环境。loguru
:用于增强日志记录。curlify
:用于将请求转换为cURL命令,方便调试。
3. 配置文件管理(多环境支持)
为了实现多环境支持,我们在config/
目录下创建不同的配置文件,例如config.dev.ini
、config.prod.ini
,存储不同环境的配置信息。
1 | # config.dev.ini |
1 | # config.prod.ini |
接着,在config
目录下编写一个读取配置文件的工具模块。通过common_config.py
来读取配置
1 | # config/common_config.py.py |
这样就可以在运行测试时指定环境,比如:
1 | ENV=dev pytest |
4. 日志模块(基于Loguru)
在自动化测试中,日志记录是非常重要的一部分,可以帮助我们在测试失败时快速定位问题。我们在utils/
目录下创建一个日志模块,使用loguru
来简化日志管理。
1 | # utils/logger.py |
Loguru提供了更强大的日志功能,包括日志文件的自动分割和保留策略,使日志管理更加灵活和方便。
5. URI统一管理
为了便于管理接口路径,我们在uri/
目录下创建endpoints.py
,用于存放所有API的路径:
1 | # uri/endpoints.py |
这样可以保证各个接口的路径统一管理,方便修改和维护。
6. 封装HTTP请求及请求日志记录
接下来,我们封装HTTP请求操作,在utils/
目录下创建一个统一的请求类BaseRequest
,并编写一个装饰器来记录每个请求的cURL命令。
1 | # Created on 2024/7/2. |
通过record_curl_command
装饰器,每次请求都会记录一个相应的cURL命令,便于调试和重现请求。如果请求失败,日志中也会记录下详细信息。
7. 编写测试用例
在scripts/
目录下,我们编写一个简单的登录测试用例。在这里,我们会结合Allure的注解,使报告更详细:
1 | # scripts/test_login.py |
8. Pytest配置及运行测试
在pytest.ini中进行pytest全局配置
1 | [pytest] |
在命令行中执行pytest:
1 | pytest |
然后用Allure命令行工具查看报告:
1 | allure serve ./allure-results |
这样,你就可以看到一个美观且详细的测试报告,里面包含了所有步骤的信息。
9. 项目目录结构更新
在实现上述功能后,项目的目录结构如下:
1 | ./pytest_api_testing_framework |
10.总结
本文介绍了一个最基本的接口自动化测试框架搭建流程,旨在为初学者提供入门演示。需要注意的是,这只是一个简单的 Demo,并未考虑企业级项目中的各种复杂场景和细节优化。如果您计划将类似框架应用于实际项目,建议结合具体需求进行更深入的优化和扩展,例如:
- 多系统/多角色的鉴权管理
- 更加完善的多环境配置文件管理
- 与Jenkins结合实现持续集成
- 企业微信/钉钉/飞书webhook推送
- 与项目管理工具结合,在结果异常时创建工单