使用pytest-xdist会导致AttributeError:模块'__main__'没有属性'__file__'

时间:2019-06-27 15:00:16

标签: python pytest python-import attributeerror xdist

我正在尝试使用pytest-xdist通过在多个CPU上运行来更快地运行测试。但是,当我切换为使用多个CPU时,测试不会运行,因为收集测试时会出错。

更具体地说,错误是

AttributeError: module '__main__' has no attribute '__file__'

这是因为要测试的脚本会导入我编写的日志记录模块。日志记录模块使用

__main__.__file__

确定主应用程序的名称,以将其添加到日志输出文件名中。

我似乎无法弄清楚pytest在多CPU模式下与在单CPU模式下有什么不同。

所以当我执行测试时,

python3 -m pytest

一切正常,但是一旦我切换到

python3 -m pytest -n 4

我得到这些错误:

____________________ ERROR collecting ***.py
***/logging/log_setup.py:21: in <module>
    app_name = os.path.basename(__main__.__file__)[:-3]
E   AttributeError: module '__main__' has no attribute '__file__'

当我尝试使用Python子过程方法执行时,会出现相同的问题:

python3 -m pytest -d --tx 3*popen//python=python3

编辑: 我现在在我的日志记录模块中使用以下代码来解决该问题:

if hasattr(__main__, '__file__'):
    app_name = os.path.basename(__main__.__file__)[:-3]
else:
    app_name = 'unknown_app_name'

现在具有多个CPU的pytest对我来说很好用。

0 个答案:

没有答案