Python 接口自动化测试框架:Pytest + Allure + YAML + Requests
这是一个基于 Python、Pytest、Allure、YAML 和 Requests 构建的接口自动化测试框架,旨在提供一个简单易用的测试框架,帮助您高效地进行 API 测试。
项目结构
project
├── api
│ ├── __init__.py
│ ├── base.py
│ └── user.py
├── config
│ ├── __init__.py
│ └── config.yaml
├── report
├── tests
│ ├── __init__.py
│ └── test_user.py
├── utils
│ ├── __init__.py
│ ├── logger.py
│ └── utils.py
├── conftest.py
└── pytest.ini
配置文件 (config/config.yaml)
user:
login:
url: 'http://example.com/api/login'
method: POST
headers:
Content-Type: 'application/json'
body:
username: test
password: test123
基础类 (api/base.py)
import requests
class BaseApi:
def __init__(self, url, method, headers=None, body=None):
self.url = url
self.method = method
self.headers = headers
self.body = body
def send_request(self):
if self.method == 'GET':
response = requests.get(self.url, headers=self.headers)
elif self.method == 'POST':
response = requests.post(self.url, headers=self.headers, json=self.body)
else:
raise ValueError('Invalid request method')
return response
def parse_response(self, response):
try:
response_json = response.json()
except ValueError:
response_json = {}
return response.status_code, response_json
接口类 (api/user.py)
from api.base import BaseApi
class UserApi(BaseApi):
def __init__(self):
super().__init__(url='', method='', headers=None, body=None)
def login(self, username, password):
self.url = 'http://example.com/api/login'
self.method = 'POST'
self.headers = {'Content-Type': 'application/json'}
self.body = {'username': username, 'password': password}
response = self.send_request()
return self.parse_response(response)
测试用例 (tests/test_user.py)
import allure
from api.user import UserApi
@allure.feature('用户接口')
class TestUser:
@allure.story('登录接口')
def test_login(self):
user_api = UserApi()
status_code, response_json = user_api.login('test', 'test123')
assert status_code == 200
assert response_json['code'] == 0
pytest 配置文件 (pytest.ini)
[pytest]
addopts = -s --alluredir=report
testpaths = tests
python_files = test_*.py
python_classes = Test*
python_functions = test_*
markers =
smoke: Run the smoke tests
regression: Run the regression tests
[allure]
clean_alluredir = true
运行测试
- 使用
pytest --alluredir=report命令运行测试并生成测试报告。 - 使用
allure serve report命令在浏览器中查看测试报告。
总结
以上是一个基本的接口自动化测试框架,您可以根据自己的需求进行扩展和完善。建议您使用 pip install -r requirements.txt 命令安装依赖库。
提示:
- 您可以根据需要添加其他接口类和测试用例。
- 您可以使用
allure的更多功能来生成更详细的测试报告。 - 您可以使用
pytest的更多功能来进行更复杂的测试。 - 您可以使用
yaml来配置更复杂的测试数据。 - 您可以使用
requests的更多功能来发送更复杂的请求。
注意:
- 请根据实际情况修改配置文件和代码。
- 请使用您自己的 API 接口和测试数据进行测试。
- 请使用
pip命令安装必要的依赖库。 - 请参考
pytest和allure的官方文档来了解更多功能。
原文地址: https://www.cveoy.top/t/topic/lfkD 著作权归作者所有。请勿转载和采集!