写个接口自动化测试框架,用Python写
时间: 2023-05-30 15:02:28 浏览: 71
以下是一个简单的接口自动化测试框架,使用Python语言编写:
1. 环境准备
在运行测试框架之前,需要安装以下软件包:
- Python 3.x
- requests
- pytest
2. 目录结构
在创建测试框架之前,需要先创建以下目录结构:
```
- api_test/
- api/
- __init__.py
- base_api.py
- tests/
- __init__.py
- test_sample.py
- config.py
- conftest.py
- requirements.txt
```
- api_test/ 目录是测试框架的主目录,包含了所有的测试用例和测试代码。
- api/ 目录是存放 API 封装代码的目录。
- tests/ 目录是存放测试用例的目录。
- config.py 是测试框架的配置文件,里面包含了一些常量,如 API 地址、用户名、密码等。
- conftest.py 是 pytest 的配置文件,主要用于设置测试环境。
- requirements.txt 是 Python 的依赖文件,里面包含了测试框架所需的所有 Python 包及其版本号。
3. 编写 API 封装代码
在 api/base_api.py 中,我们定义了一个 BaseApi 类,用于封装 HTTP 请求方法。具体代码如下:
```python
import requests
class BaseApi:
def __init__(self, base_url, headers=None):
self.base_url = base_url
self.headers = headers or {}
def request(self, method, path, **kwargs):
url = self.base_url + path
headers = self.headers.copy()
headers.update(kwargs.pop('headers', {}))
response = requests.request(method, url, headers=headers, **kwargs)
return response
```
4. 编写测试用例
在 tests/test_sample.py 中,我们编写了一个简单的测试用例,用于测试登录接口。具体代码如下:
```python
def test_login(api):
data = {
'username': 'admin',
'password': 'admin123'
}
response = api.request('POST', '/login', json=data)
assert response.status_code == 200
assert response.json() == {'status': 'success', 'message': 'Login success.'}
```
5. 编写 pytest 配置文件
在 conftest.py 中,我们定义了一个 api 的 pytest fixture,用于初始化 API 封装类。具体代码如下:
```python
import pytest
from api.base_api import BaseApi
from config import API_BASE_URL, API_HEADERS
@pytest.fixture(scope='session')
def api():
return BaseApi(API_BASE_URL, headers=API_HEADERS)
```
6. 运行测试
在运行测试之前,需要先安装测试框架所需的 Python 包。在命令行中执行以下命令即可:
```
pip install -r requirements.txt
```
安装完成后,可以直接在命令行中运行 pytest 命令,即可运行测试:
```
pytest
```
测试结果会在命令行中显示。