pytest如何配合requests进行API测试?
时间: 2024-09-14 13:14:06 浏览: 43
基于python+pytest+requests+yaml+allure接口自动化测试框架项目源码.zip
5星 · 资源好评率100%
`pytest`是一个流行的Python测试框架,它非常适合进行API测试,尤其是当你需要结合`requests`库来发送HTTP请求并验证响应时。以下是使用`pytest`配合`requests`进行API测试的基本步骤:
1. **安装依赖**:
首先确保已安装`pytest`和`requests`库。如果还没有安装,可以使用pip进行安装:
```
pip install pytest requests
```
2. **编写测试模块**:
创建一个新的Python文件(例如`test_api.py`),在这个文件里,你可以创建一个`pytest`的测试函数,每个函数代表一个API操作。
```python
import requests
import pytest
def test_get_user_data():
response = requests.get('http://api.example.com/user')
assert response.status_code == 200
assert 'name' in response.json()
```
这段代码中,我们使用`requests.get()`发送GET请求到指定URL,并检查返回状态码是否为200(成功)以及JSON数据中是否存在'name'字段。
3. **运行测试**:
在命令行中,导航到包含测试文件的目录,然后运行`pytest`命令来运行测试:
```
pytest test_api.py
```
4. **断言和错误处理**:
`pytest`支持各种断言,如上面的`assert`用于检查条件是否满足。对于异常处理,可以在`try-except`块中捕获预期的错误,并通过`pytest.raises`标记来验证。
5. **使用fixture**:
如果有重复的设置或清理工作,可以定义fixture(固定件)。例如,可以定义一个`get_request` fixture 来封装HTTP请求,这样其他测试函数就可以复用它了。
```python
@pytest.fixture
def get_user_data():
return requests.get('http://api.example.com/user')
def test_get_user_data_success(get_user_data):
response = get_user_data
assert response.status_code == 200
assert 'name' in response.json()
def test_get_user_data_error(get_user_data):
with pytest.raises(requests.exceptions.RequestException):
get_user_data.raise_for_status() # 异常处理
```
阅读全文