问题
使用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")
# 这里可以添加更多的总结逻辑