- 优化 is_visible,支持快速状态检查。 - 新增 log_screenshot/log_screenshot_bytes 截图。 - 更新 README.md。 - 其他优化。
52 lines
1.7 KiB
Python
52 lines
1.7 KiB
Python
#!/usr/bin/env python
|
||
# coding=utf-8
|
||
|
||
"""
|
||
@author: CNWei,ChenWei
|
||
@Software: PyCharm
|
||
@contact: t6g888@163.com
|
||
@file: conftest
|
||
@date: 2026/1/19 14:08
|
||
@desc:
|
||
"""
|
||
import pytest
|
||
import allure
|
||
from pathlib import Path
|
||
|
||
|
||
@pytest.hookimpl(tryfirst=True, hookwrapper=True)
|
||
def pytest_runtest_makereport(item, call):
|
||
"""
|
||
本钩子函数会在每个测试阶段(setup, call, teardown)执行后被调用。
|
||
item: 测试用例对象
|
||
call: 测试执行阶段的信息
|
||
"""
|
||
# 1. 先执行常规的用例报告生成逻辑
|
||
outcome = yield
|
||
report = outcome.get_result()
|
||
|
||
# 2. 我们只关注测试执行阶段 ("call")
|
||
# 如果该阶段失败了(failed),则触发截图
|
||
if report.when == "call" and report.failed:
|
||
# 3. 从测试用例中获取 driver 实例
|
||
# 假设你在 fixture 中注入的参数名为 'driver'
|
||
driver_instance = item.funcargs.get("driver")
|
||
|
||
if driver_instance:
|
||
try:
|
||
# 4. 调用你在 CoreDriver 中实现的底层截图方法
|
||
# 这里的 name 我们可以动态取测试用例的名字
|
||
case_name = item.name
|
||
file_path = driver_instance.full_screen_screenshot(name=f"CRASH_{case_name}")
|
||
|
||
# 5. 如果路径存在,将其关联到 Allure 报告
|
||
if file_path:
|
||
p = Path(file_path)
|
||
if p.exists():
|
||
allure.attach.file(
|
||
source=p,
|
||
name="【故障现场自动截图】",
|
||
attachment_type=allure.attachment_type.PNG
|
||
)
|
||
except Exception as e:
|
||
print(f"故障自动截图执行失败: {e}") |