You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pytest_sessionfinish无法触发,如何实现测试结果统计并上报Prometheus?

问题:pytest_sessionfinish钩子无法触发,无法统计测试用例结果传递至Prometheus网关

我希望调用pytest_sessionfinish方法获取通过/失败测试用例的数量,并将其传递至Prometheus网关,但无论进行何种操作,该方法都无法触发。以下是我的代码:

import pytest


@pytest.fixture(scope="session")
def my_fixture():
    print("in fun")
    yield


def test_example(my_fixture):
    assert 2 + 2 == 4


@pytest.hookimpl(tryfirst=True)
def pytest_sessionfinish(session, exitstatus):
    print("pytest_sessionfinish called")

我也曾尝试使用-s flag避免打印输出被抑制,但并无效果。此外还尝试过:开启调试模式排查错误;运行pytest时使用-s和-v参数;在多环境测试,但问题依旧,恳请提供解决思路。

解决思路

  • 调整钩子函数的放置位置:pytest不会自动识别普通测试脚本里的钩子函数,需将pytest_sessionfinish移至项目根目录的conftest.py文件中,pytest会自动加载该文件内的钩子与fixture。
  • 升级pytest版本:部分旧版本pytest对@pytest.hookimpl装饰器支持存在问题,执行pip install --upgrade pytest升级至最新稳定版后重试。
  • 校验钩子函数参数:确认pytest_sessionfinish的参数为session和exitstatus,参数名与数量必须完全匹配,否则会导致钩子无法触发。
  • 确保测试流程完整执行:若测试在session结束前崩溃或被强制终止,pytest_sessionfinish不会触发。可添加多个简单测试用例,验证测试是否能正常跑完整个session周期。
  • 分析pytest调试日志:执行pytest -s -v --debug生成pytestdebug.log,日志中会记录钩子的加载与触发状态,可据此排查钩子是否被正确识别。

内容的提问来源于stack exchange,提问作者user3147722

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 18:29:53