python+pytest+requests+allure接口自动化
时间: 2025-01-07 17:12:49 浏览: 2
### 使用 Python、pytest、requests 和 Allure 进行接口自动化测试
#### 准备工作
为了构建一个完整的接口自动化测试框架,需要安装几个必要的包。可以通过 pip 安装这些依赖项:
```bash
pip install requests pytest allure-pytest pyyaml openpyxl
```
这将确保环境中有足够的工具来编写和运行测试。
#### 测试结构设计
创建合理的文件夹结构有助于更好地管理和维护测试代码。建议采用如下目录布局[^1]:
- `./tests`:放置所有的测试脚本。
- `./data`:用于存储测试所需的数据集(可以是 JSON 文件或 Excel 表格)。
- `./config`:配置文件所在位置。
- `./reports`:保存生成的测试报告。
#### 编写测试案例
下面是一个简单的例子展示如何利用 Requests 库发起 HTTP 请求并验证响应结果:
```python
import requests
def test_get_user_info():
url = "https://api.example.com/user"
response = requests.get(url)
assert response.status_code == 200, f"Unexpected status code {response.status_code}"
user_data = response.json()
assert 'id' in user_data and isinstance(user_data['id'], int), "User ID should be an integer."
```
此函数会向指定 URL 发送 GET 请求,并检查返回的状态码以及用户信息中的特定字段是否存在且类型正确。
#### 配置 Pytest 执行命令
定义入口文件 main_run.py 来集中控制整个项目的执行流程[^2]:
```python
import os
import pytest
def run_tests():
pytest.main([
'-v',
'./tests/', # 指定要扫描的测试用例路径
'--alluredir=./results', # 设置Allure的结果输出目录
'--clean-alluredir' # 清理之前的测试记录
])
os.system('allure serve results') # 启动本地服务查看最新一次的测试报告
if __name__ == "__main__":
run_tests()
```
这段代码设置了 Pytest 的参数选项,指定了测试用例的位置、Allure 报告的存放地点,并清理旧有的测试数据;最后调用了 `os.system()` 方法启动了一个临时服务器以便即时预览 HTML 版本的测试报告。
#### 数据驱动测试 (可选)
如果希望进一步增强灵活性,则可以在测试过程中引入外部数据源。例如,在 YAML 或者 Excel 中准备一组或多组输入值及其预期输出,再通过编程方式读取它们参与实际测试过程[^3]。
对于 YAML 格式的测试数据管理,可以这样操作:
```python
import yaml
with open('./data/test_cases.yaml', encoding='utf8') as file:
cases = yaml.safe_load(file)
@pytest.mark.parametrize("input_params", cases["get_user"])
def test_with_yaml(input_params):
...
```
这里假设有一个名为 `test_cases.yaml` 的文件包含了多个不同场景下的入参组合,上述方法能够遍历每一个条目完成相应的断言逻辑。
---
阅读全文