在 Windows 系统下,使用 Python、Pytest 和 Allure 搭建接口自动化测试框架是一个不错的选择。以下是详细的步骤,从安装环境到框架结构的搭建,帮助您快速上手。
一、环境配置
-
安装 Python:确保已安装 Python(建议 3.7 以上版本)。
- Python 官网下载并安装 Python。
- 验证安装是否成功:打开终端,输入
python --version。
-
安装 Pytest:Pytest 是一个简单而强大的测试框架。
pip install pytest -
安装 Allure:Allure 是一个报告生成工具,用于生成测试报告。
- 先安装 Java(JDK),因为 Allure 依赖 Java 运行环境。
- 安装 Allure:
- 下载 Allure 命令行版并解压缩。
- 将解压后的
bin文件夹路径添加到环境变量Path中。 - 验证安装是否成功:打开终端,输入
allure --version。
-
安装 Allure-pytest:让 Pytest 支持生成 Allure 报告。
pip install allure-pytest -
安装 requests:用于发送 HTTP 请求。
pip install requests
二、项目结构
创建一个清晰的项目结构是良好实践。以下是推荐的结构:
api_test_framework/
│
├── config/
│ └── config.yaml # 配置文件,存储接口基本信息
│
├── test_cases/
│ └── test_api.py # 测试用例
│
├── utils/
│ ├── request_helper.py # 请求封装工具
│ └── logger.py # 日志记录器
│
├── reports/ # 报告存放目录
├── requirements.txt # 依赖文件
└── conftest.py # Pytest 配置文件
三、框架实现
1. 配置文件(config/config.yaml)
使用 YAML 格式来存储测试环境信息,例如服务器地址、端口等。
# config/config.yaml
api:
base_url: "https://api.example.com"
2. 请求封装工具(utils/request_helper.py)
封装一个通用的请求函数,简化接口调用。
# utils/request_helper.py
import requests
import yaml
# 读取配置文件
def load_config():
with open("config/config.yaml", "r") as file:
return yaml.safe_load(file)
config = load_config()
class RequestHelper:
def __init__(self):
self.base_url = config['api']['base_url']
def send_request(self, method, endpoint, **kwargs):
url = f"{self.base_url}{endpoint}"
response = requests.request(method, url, **kwargs)
return response
3. 日志记录器(utils/logger.py)
记录测试日志,方便调试和追踪。
# utils/logger.py
import logging
def get_logger():
logger = logging.getLogger("api_test_logger")
logger.setLevel(logging.DEBUG)
# 输出到控制台
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
console_handler.setFormatter(formatter)
logger.addHandler(console_handler)
return logger
4. 测试用例(test_cases/test_api.py)
创建测试用例,使用 Pytest 语法,并集成 Allure 标注。
# test_cases/test_api.py
import pytest
import allure
from utils.request_helper import RequestHelper
from utils.logger import get_logger
logger = get_logger()
request_helper = RequestHelper()
@allure.feature("User Module")
@allure.story("Test User Login")
@pytest.mark.parametrize("username, password, expected_status", [
("user1", "password1", 200),
("user2", "password2", 403)
])
def test_login(username, password, expected_status):
payload = {
"username": username,
"password": password
}
with allure.step("Sending login request"):
response = request_helper.send_request("POST", "/login", json=payload)
logger.info(f"Request Payload: {payload}")
logger.info(f"Response Status Code: {response.status_code}")
assert response.status_code == expected_status
5. Pytest 配置(conftest.py)
设置 Pytest 配置,添加钩子函数等。
# conftest.py
import pytest
@pytest.fixture(scope="session", autouse=True)
def setup_and_teardown():
print("\nSetup before any tests")
yield
print("\nTeardown after all tests")
四、运行测试并生成报告
-
运行测试用例:在项目根目录下运行以下命令。
pytest test_cases/ --alluredir=reports/ -
生成 Allure 报告:生成测试报告以便查看测试结果。
allure serve reports/
五、总结
通过以上步骤,您已经成功搭建了一个基础的接口自动化测试框架。
2192

被折叠的 条评论
为什么被折叠?



