我有一个问题pytest-json-report
和pytest-xdist
插件一起工作。基本上,从这两个单独开始时测试运行顺利,所以从功能的角度来看,似乎没有问题。
仅当两者都启用时才会出现问题。在初始化节点(运行)后,我得到了这个-n 2
:
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR> File "/path/to/test/root/.venv/lib/python3.7/site-packages/_pytest/main.py", line 196, in wrap_session
INTERNALERROR> session.exitstatus = doit(config, session) or 0
INTERNALERROR> File "/path/to/test/root/.venv/lib/python3.7/site-packages/_pytest/main.py", line 246, in _main
INTERNALERROR> config.hook.pytest_runtestloop(session=session)
INTERNALERROR> File "/path/to/test/root/.venv/lib/python3.7/site-packages/pluggy/hooks.py", line 286, in __call__
INTERNALERROR> return self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR> File "/path/to/test/root/.venv/lib/python3.7/site-packages/pluggy/manager.py", line 93, in _hookexec
INTERNALERROR> return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR> File "/path/to/test/root/.venv/lib/python3.7/site-packages/pluggy/manager.py", line 87, in <lambda>
INTERNALERROR> firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
INTERNALERROR> File "/path/to/test/root/.venv/lib/python3.7/site-packages/pluggy/callers.py", line 208, in _multicall
INTERNALERROR> return outcome.get_result()
INTERNALERROR> File "/path/to/test/root/.venv/lib/python3.7/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR> raise ex[1].with_traceback(ex[2])
INTERNALERROR> File "/path/to/test/root/.venv/lib/python3.7/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR> res = hook_impl.function(*args)
INTERNALERROR> File "/path/to/test/root/.venv/lib/python3.7/site-packages/xdist/dsession.py", line 112, in pytest_runtestloop
INTERNALERROR> self.loop_once()
INTERNALERROR> File "/path/to/test/root/.venv/lib/python3.7/site-packages/xdist/dsession.py", line 135, in loop_once
INTERNALERROR> call(**kwargs)
INTERNALERROR> File "/path/to/test/root/.venv/lib/python3.7/site-packages/xdist/dsession.py", line 177, in worker_workerfinished
INTERNALERROR> assert not crashitem, (crashitem, node)
INTERNALERROR> AssertionError: ('path_to_test/test_file.py::test_function[TestName]', <WorkerController gw1>)
INTERNALERROR> assert not 'path_to_test/test_file.py::test_function[TestName]'
很难找到麻烦制造者,因为堆栈跟踪不完整。
我尝试了几件事来摆脱它:
- 颠簸xdist版本(上下)
- 与 json-report 版本相同
- 碰撞 pytest 本身 - 也向上和向下
- 清除我覆盖的所有自定义钩子(所以基本上插件作为它们的默认值工作)
- 通过 cmd 行开关或将其放入调用 json-report
pytest_configure
- 在 python 3.8.x 上运行
- 在不同的操作系统上运行。
我的问题是:
- 有没有人有类似的问题?
- 如何调试它以获得问题的明确根本原因
当然,我将不胜感激如何解决这个问题的其他建议和想法。