Pytest аварийно завершает работу при совместном использовании плагинов json-report и xdist
У меня проблема с 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-отчета
- Натыкаясь на сам pytest - также вверх и вниз
- Очистка всех пользовательских хуков, которые я перезаписал (так что в основном плагины работают по умолчанию)
- Вызов json-report переключателями строки cmd или помещением в
pytest_configure
- Работает на python 3.8.x
- Работает на разных ОС.
Мои вопросы:
- Были ли у кого-нибудь подобные проблемы?
- Как отладить его, чтобы выяснить первопричину проблемы
И, конечно, буду благодарен за другие предложения и идеи, как с этим справиться.