pytest-playwright与allure
时间: 2025-01-28 18:55:20 浏览: 45
### 如何在 pytest-playwright 中集成 Allure 生成测试报告
#### 安装依赖库
为了实现这一目标,需要安装 `pytest`、`playwright` 和 `allure-pytest` 这些必要的 Python 库。可以通过 pip 来完成这些操作。
```bash
pip install pytest playwright allure-pytest
```
#### 修改配置文件
对于 `pytest-playwright.py` 文件来说,在其中加入如下代码片段用于引入 `allure` 包:
```python
import allure
```
这段代码确保了可以在编写测试案例的过程中调用 `allure` 的功能[^2]。
#### 编写测试用例
当准备好了环境之后就可以开始编写带有 `@allure.step()` 或者其他装饰器标记的测试函数了。下面是一个简单的例子展示了怎样利用 Playwright 执行浏览器自动化任务的同时记录下每一步骤的信息给 Allure 报告使用。
```python
import pytest
from playwright.sync_api import sync_playwright
import allure
@pytest.fixture(scope="module")
def browser():
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
yield browser
browser.close()
@allure.feature('User Login')
class TestLogin:
@allure.story('Successful login')
def test_successful_login(self, browser):
page = browser.new_page()
with allure.step("Open the website"):
page.goto("https://example.com/login")
with allure.step("Enter username and password"):
page.fill("#username", "admin")
page.fill("#password", "secret")
with allure.step("Submit form"):
page.click("button[type='submit']")
with allure.step("Verify successful login"):
assert "Welcome" in page.text_content("h1")
```
上述代码定义了一个名为 `TestLogin` 类及其内部的方法 `test_successful_login`, 使用了多个 `with allure.step()` 块来描述具体的操作流程,并且通过断言验证登录成功后的页面内容是否符合预期[^1]。
#### 设置命令行参数
为了让 Pytest 能够识别并处理 Allure 相关的数据,执行测试的时候应当附加特定选项。这里给出完整的 CLI 参数列表以及它们的作用解释:
| 参数 | 描述 |
| --- | --- |
| `-v` | 提供更加详尽的日志输出,显示更多关于每个测试状态的具体细节 |
| `-s` | 不捕获标准输入/输出流,使得任何来自被测程序的标准输出都能直接呈现在终端上 |
| `--alluredir=./temps` | 设定一个临时目录用来存储由本次运行产生的中间数据文件夹路径为当前项目的根目录下的 temps 子文件夹内 |
| `--clean-alluredir` | 在每次启动前清理掉之前存在的同名目录里的残留物 |
因此实际使用的命令应该是这样的形式:
```bash
pytest -vs --alluredir=./temps --clean-alluredir tests/
```
这条指令会触发一次全面扫描整个 `tests/` 下面所有的 `.py` 文件寻找符合条件的单元测试项;与此同时还会初始化一个新的空闲空间专门存放即将要创建出来的 XML 格式的结构化日志文档集合体。
#### 自动生成 HTML 版本的可视化报表
最后一步就是把刚刚收集起来的一系列原始资料转换成易于阅读理解的形式——即HTML格式的交互式图表界面。这通常是在所有测试结束后自动发生的动作之一。为此目的服务而编写的钩子函数位于 `conftest.py` 文件之中:
```python
import os
import pytest
def pytest_sessionfinish(session, exitstatus):
"""This hook is called after whole test run finished."""
os.system("allure generate ./temps -o ./report --clean")
```
每当一轮完整的测试周期结束之际就会激活这个回调机制进而调用系统级 shell 指令去构建最终产物放置于相对应的位置等待用户查阅分析[^3]。
阅读全文
相关推荐


















