Python 接口自动化框架:Pytest + Allure + YAML + Requests 零代码封装
Python 接口自动化框架:Pytest + Allure + YAML + Requests 零代码封装
本文将介绍如何使用 Python、Pytest、Allure、YAML 和 Requests 库构建一个接口自动化框架,并实现零代码封装,以便轻松编写和维护测试用例,生成详细的测试报告。
框架结构
框架主要包括以下几个部分:
- 测试框架:Pytest - 一个强大的测试框架,提供易于编写和维护的测试用例,以及丰富的插件和扩展功能。
- 测试报告:Allure - 生成丰富的测试报告和图表,帮助更好地理解测试结果。
- 数据存储:YAML - 使用 YAML 文件存储测试数据和配置信息,实现数据和代码分离,方便维护和更新。
- HTTP 请求库:Requests - 用于发送 HTTP 请求和处理响应,提供简单易用的接口。
- 代码封装 - 封装常用的功能,例如登录、退出、获取 Token 等,提高测试用例的可重用性。
代码示例
1. 测试用例文件 (test_example.py)
import pytest
from common.utils import get_token, login
from common.api import Api
@pytest.fixture(scope='module')
def api():
token = get_token()
return Api(token=token)
class TestExample:
def test_get_user(self, api):
response = api.get('/users/1')
assert response.status_code == 200
assert response.json()['name'] == 'John Doe'
def test_create_user(self, api):
response = api.post('/users', data={'name': 'Jane Doe'})
assert response.status_code == 201
2. 公共方法文件 (common/utils.py)
import requests
def get_token():
response = requests.post('https://api.example.com/auth', data={'username': 'user', 'password': 'password'})
return response.json()['token']
def login(username, password):
# 登录逻辑
pass
3. API 接口封装文件 (common/api.py)
import requests
class Api:
def __init__(self, token):
self.token = token
self.base_url = 'https://api.example.com'
def get(self, url, params=None):
headers = {'Authorization': f'Bearer {self.token}'} # 添加 token
response = requests.get(f'{self.base_url}{url}', headers=headers, params=params)
return response
def post(self, url, data=None):
headers = {'Authorization': f'Bearer {self.token}'} # 添加 token
response = requests.post(f'{self.base_url}{url}', headers=headers, data=data)
return response
总结
通过使用 Pytest、Allure、YAML 和 Requests 库,并结合代码封装,可以构建一个功能强大、易于维护的接口自动化框架,显著提高测试效率和代码质量。
原文地址: https://www.cveoy.top/t/topic/lfkI 著作权归作者所有。请勿转载和采集!