用python+pytest+requests做接口测试怎么做
时间: 2023-12-30 21:06:26 浏览: 73
您好,关于使用 Python pytest requests 进行接口测试的具体方法,可以按照以下步骤进行:
1. 安装必要的库
在 Python 环境下安装 pytest 和 requests 库,可以使用以下命令:
```python
pip install pytest
pip install requests
```
2. 创建测试文件和测试用例
在项目中建立一个文件夹,命名为tests(如果没有该文件夹的话),在tests文件夹下创建一个测试文件,命名为test_example.py,用于编写测试用例。
在test_example.py 文件中,先导入 pytest 和 requests 库,然后编写测试用例函数。例如:
```python
import pytest
import requests
def test_get_example():
url = 'http://example.com/api/get'
headers = {'Content-Type': 'application/json'}
response = requests.get(url, headers=headers)
assert response.status_code == 200
assert 'Example' in response.json()
```
这是一个简单的 get 请求测试用例,使用 requests 库发送请求,并通过 assert 断言判断返回结果是否正确。
3. 运行测试
在项目根目录下,使用以下命令启动 pytest 运行测试用例:
```python
pytest
```
如果测试全部通过,控制台会显示如下信息:
```python
============================= test session starts =============================
...
collected 1 item
test_example.py . [100%]
============================== 1 passed in 0.23s ==============================
```
如果测试未通过,会显示具体的错误信息,如:
```python
============================= test session starts =============================
...
collected 1 item
test_example.py F [100%]
================================== FAILURES ===================================
______________________________ test_get_example ______________________________
def test_get_example():
url = 'http://example.com/api/get'
headers = {'Content-Type': 'application/json'}
response = requests.get(url, headers=headers)
assert response.status_code == 200
> assert 'Example' in response.json()
test_example.py:9:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
response = <Response [500]>
def json(self, **kwargs):
r"""If Response's content is json, return the json-encoded content.
:param \*\*kwargs: Optional arguments that ``json.loads`` takes.
"""
if not self.encoding and len(self.content) > 3:
encodings = guess_json_utf(self.content)
if encodings:
try:
return json.loads(self.content.decode(encodings[0]), **kwargs)
except UnicodeDecodeError:
pass
return json.loads(self.text, **kwargs)
def test_get_example():
url = 'http://example.com/api/get'
headers = {'Content-Type': 'application/json'}
response = requests.get(url, headers=headers)
assert response.status_code == 200
> assert 'Example' in response.json()
E AssertionError: assert 'Example' in None
E + where None = <Response [500]>.json()
test_example.py:10: AssertionError
=========================== short test summary info ============================
FAILED test_example.py::test_get_example - AssertionError: assert 'Example' in...
========================= 1 failed, 1 passed in 0.45s ==========================
```
4. 高级用法
pytest 还提供了更多功能强大的测试用例编写和运行方式,例如:
- 参数化测试:使用@pytest.mark.parametrize标记来测试相同的功能,在不同的情况下运行测试。
- 报告和输出控制:控制台和报告可以被类似于```pytest -v -s --html=report.html```的命令来控制和配置。
- 使用 Fixture:pytest fixtures 将测试运行的环境和外部应用程序配置隔离开来,使测试用例更加可靠。
希望这些信息能对您有所帮助。
阅读全文