Python + Pytest + Allure 自动化测试报告教程
从零开始搭建完整的测试报告生成系统,包含详细步骤和代码示例。
环境准备
-
安装Python 3.8+
bash# 验证安装 python --version
-
安装依赖库
bashpip install pytest allure-pytest
-
安装Allure命令行工具
-
解压并配置环境变量(以Mac/Linux为例):
bash# 解压 unzip allure-commandline-*.zip # 添加到PATH export PATH=$PATH:/path/to/allure/bin
项目结构
创建基础目录:
plaintext
project/
├── tests/
│ ├── test_login.py # 测试用例
│ └── conftest.py # 共享配置
├── reports/ # 报告输出目录
└── pytest.ini # 配置文件
编写测试用例
- 创建基础测试(
tests/test_login.py
)
python
import pytest
def test_login_success():
assert "admin" == "admin", "用户名验证成功"
def test_login_fail():
assert "user" != "admin", "用户名验证失败"
@pytest.mark.parametrize("input", ["a", "b", "c"])
def test_parametrized(input):
assert len(input) == 1
- 添加钩子函数(
tests/conftest.py
)
python
import pytest
@pytest.fixture(scope="session")
def setup():
print("全局初始化")
yield
print("全局清理")
- 配置Pytest(
pytest.ini
)
ini
[pytest]
addopts = -v --alluredir=./reports/allure_raw
testpaths = tests
运行测试并生成报告
- 执行测试
bash
pytest # 自动生成原始数据到reports/allure_raw
- 生成HTML报告
bash
allure generate ./reports/allure_raw -o ./reports/html --clean
- 本地查看报告
bash
allure open ./reports/html # 自动打开浏览器
Allure高级用法
- 添加测试步骤
python
import allure
def test_with_steps():
with allure.step("打开登录页"):
print("导航到登录页面")
with allure.step("输入用户名"):
assert True
with allure.step("验证结果"):
allure.attach("截图", "image/png")
- 添加分类标签
python
@allure.feature("登录模块")
@allure.story("成功场景")
def test_categories():
allure.epic("用户认证系统")
allure.tag("smoke")
- 添加失败截图(需配合Selenium)
python
from selenium import webdriver
def test_screenshot():
driver = webdriver.Chrome()
try:
driver.get("https://example.com")
assert "Example" in driver.title
except:
allure.attach(driver.get_screenshot_as_png(), name="失败截图", attachment_type=allure.attachment_type.PNG)
raise
finally:
driver.quit()
常见问题解决
-
Allure命令未找到
- 检查环境变量:
echo $PATH
- 重启终端
- 检查环境变量:
-
报告无数据
- 确认
--alluredir
路径正确 - 检查
pytest
执行是否报错
- 确认
-
中文乱码
bash# 设置Java编码 export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"
集成到CI/CD
Jenkins配置示例:
-
添加构建后步骤:
plaintext[Pytest命令] pytest --alluredir=$WORKSPACE/reports/allure_raw [Report Path] $WORKSPACE/reports/allure_raw