pytest-xdist 日志打印问题
问题描述:
pytest-xidst: 进程级的并发运行pytest插件,-n 指定CPU数量, --loadfile 参数来控制顺序 ,默认是无序。
在利用pytest-xidst实现case并发执行,与框架中的日志处理logging模块不兼容,遇到一些日志打印问题。 logging模块内日志轮转的handlers是多线程安全,不支持多进程。所以需要改动日志框架支持多进程。
简要说明下logging模块常用的handlers:
- StreamHandler: 将日志信息输出到sys.stdout, sys.stderr 或者类文件对象,日志信息会输出到指定的stream中,如果stream为空则默认输出到sys.stderr。
def __init__(self, filename, mode='a', encoding=None, delay=False):
- FileHandler:继承自StreamHandler。将日志信息输出到磁盘文件上。
解决方案:可修改源码加锁保证进程安全。我这里选取现有ConcurrentLogHandler模块进行处理