用python结合pytest 写一个接口自动化测试框架
时间: 2023-08-02 19:15:25 浏览: 113
好的,以下是一个简单的接口自动化测试框架。
首先,需要安装pytest库。可以使用以下命令:
```python
pip install pytest
```
然后,可以创建一个项目文件夹,并在其中创建以下文件:
1. `conftest.py`:用于定义全局配置和夹具。
2. `test_*.py`:包含测试用例的文件(可以有多个)。
接下来,我们将逐步介绍如何编写这些文件。
## conftest.py
在这个文件中,我们可以定义一些全局配置和夹具。这里有一个例子:
```python
import pytest
import requests
@pytest.fixture(scope="session")
def api():
"""创建一个API客户端实例"""
return requests.Session()
@pytest.fixture(scope="session")
def base_url():
"""定义API的基本URL"""
return "http://api.example.com"
@pytest.fixture(scope="module")
def auth(api, base_url):
"""执行身份验证,并返回访问令牌"""
response = api.post(f"{base_url}/auth", json={"username": "user", "password": "pass"})
token = response.json()["access_token"]
api.headers.update({"Authorization": f"Bearer {token}"})
return token
```
在这个例子中,我们定义了三个夹具:
1. `api`:创建一个API客户端实例,用于发送HTTP请求。
2. `base_url`:定义API的基本URL。
3. `auth`:执行身份验证,并返回访问令牌。
其中,`api`夹具的作用域为`session`,也就是说,在整个测试过程中,只会创建一次这个夹具。而`base_url`和`auth`的作用域为`module`,也就是说,在每个测试模块(即每个`test_*.py`文件)中,都会创建一次这两个夹具。
## test_*.py
在这些文件中,我们可以编写测试用例。以下是一个例子:
```python
def test_get_users(api, base_url, auth):
"""测试获取所有用户"""
response = api.get(f"{base_url}/users")
assert response.status_code == 200
assert len(response.json()) > 0
def test_create_user(api, base_url, auth):
"""测试创建新用户"""
data = {"username": "newuser", "password": "newpass"}
response = api.post(f"{base_url}/users", json=data)
assert response.status_code == 201
assert response.json()["username"] == data["username"]
```
在这个例子中,我们定义了两个测试用例:
1. `test_get_users`:测试获取所有用户,并检查返回的状态码和用户数量。
2. `test_create_user`:测试创建新用户,并检查返回的状态码和用户名。
这些测试用例将通过以下命令运行:
```python
pytest
```
这将在当前目录中查找所有以`test_*.py`命名的文件,并运行其中的所有测试用例。
总的来说,这是一个非常简单的接口自动化测试框架。您可以根据需要添加更多的夹具和测试用例,并使用pytest的各种特性(如参数化、装饰器等)来扩展它。
阅读全文