pytest-xdist库作并行任务,钩子函数重复调用问题

问题

使用xdist并发执行用例时,例如开启进程为4时,运行用例。
conftest.py中 用于收集测试结果 的pytest_terminal_summary方法 也被执行了4次

34ed9965-5003-4c69-afe2-203418d7f445

需求是 如何只执行一次

原因

在conftest.py里直接使用pytest_terminal_summary 方法来收集用例结果并写入文件时,其实是共收集了5次, g0 g1 g2 g3 g4 master (文件被写入了5次) 。 实际上只关注 master最后统计那次的。

解决方案

在pytest_terminal_summary中 加if not hasattr(config,“workeroutput”): 来判断 是否为master那次的返回,如果是则写入 否则不写入。

# conftest.py

import pytest

def pytest_terminal_summary(terminalreporter, exitstatus, config):
    # 仅在 master 进程中执行总结逻辑
    if not hasattr(config, "workeroutput"):
        # 执行你的总结逻辑
        terminalreporter.write("Running pytest_terminal_summary only once in the master process.\n")
        # 这里可以添加更多的总结逻辑