Pytest xdist库作并行任务,钩子函数重复调用问题
问题
使用 xdist 并发执行用例时,例如开启进程为 4 时,运行用例。 conftest.py 中 用于收集测试结果 的 pytest_terminal_summary 方法 也被执行了 4 次
需求是如何只执行一次
原因
在 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")
# 这里可以添加更多的总结逻辑