smarie / python-pytest-harvest

Store data created during your `pytest` tests execution, and retrieve it at the end of the session, e.g. for applicative benchmarking purposes.
https://smarie.github.io/python-pytest-harvest/
BSD 3-Clause "New" or "Revised" License
61 stars 8 forks source link

EOFError during pytest session finish with pytest_xdist plugin #72

Open junuMoon opened 2 months ago

junuMoon commented 2 months ago

cmd

pytest tests/test_model_follow_character_description.py -n 4

Env

Error Traceback

============================================= test session starts ==============================================
platform linux -- Python 3.12.3, pytest-8.1.1, pluggy-1.5.0
rootdir: /mnt/raid/fran/kai
configfile: pytest.ini
plugins: anyio-4.3.0, asyncio-0.23.6, xdist-3.6.1, repeat-0.9.3, deepeval-0.21.36, harvest-1.10.5
asyncio: mode=Mode.STRICT
initialized: 4/4 workers/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/deepeval/__init__.py:42: UserWarning: You are using deepeval version 0.21.36, however version 0.21.42 is available. You should consider upgrading via the "pip install --upgrade deepeval" command.
  warnings.warn(
/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/deepeval/__init__.py:42: UserWarning: You are using deepeval version 0.21.36, however version 0.21.42 is available. You should consider upgrading via the "pip install --upgrade deepeval" command.
  warnings.warn(
/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/deepeval/__init__.py:42: UserWarning: You are using deepeval version 0.21.36, however version 0.21.42 is available. You should consider upgrading via the "pip install --upgrade deepeval" command.
  warnings.warn(
/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/deepeval/__init__.py:42: UserWarning: You are using deepeval version 0.21.36, however version 0.21.42 is available. You should consider upgrading via the "pip install --upgrade deepeval" command.
  warnings.warn(
4 workers [4 items]     
....                                                                                                     [100%]Running teardown with pytest sessionfinish...
Traceback (most recent call last):
  File "/mnt/raid/fran/miniconda3/bin/pytest", line 8, in <module>
    sys.exit(console_main())
             ^^^^^^^^^^^^^^
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/_pytest/config/__init__.py", line 197, in console_main
    code = main()
           ^^^^^^
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/_pytest/config/__init__.py", line 174, in main
    ret: Union[ExitCode, int] = config.hook.pytest_cmdline_main(
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    raise exception.with_traceback(exception.__traceback__)
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
          ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/_pytest/main.py", line 332, in pytest_cmdline_main
    return wrap_session(config, _main)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/_pytest/main.py", line 320, in wrap_session
    config.hook.pytest_sessionfinish(
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/pluggy/_callers.py", line 182, in _multicall
    return outcome.get_result()
           ^^^^^^^^^^^^^^^^^^^^
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/pluggy/_result.py", line 100, in get_result
    raise exc.with_traceback(exc.__traceback__)
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    teardown.throw(outcome._exception)
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/_pytest/logging.py", line 871, in pytest_sessionfinish
    return (yield)
            ^^^^^
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    teardown.throw(outcome._exception)
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/_pytest/terminal.py", line 866, in pytest_sessionfinish
    result = yield
             ^^^^^
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    teardown.throw(outcome._exception)
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/_pytest/warnings.py", line 140, in pytest_sessionfinish
    return (yield)
            ^^^^^
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
          ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/raid/fran/kai/tests/conftest.py", line 82, in pytest_sessionfinish
    session_results_df = get_session_results_df(session)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/pytest_harvest/plugin.py", line 246, in get_session_results_df
    possibly_restore_xdist_workers_structs(session_or_request)
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/pytest_harvest/plugin.py", line 476, in possibly_restore_xdist_workers_structs
    workers_saved_material = session.config.hook.pytest_harvest_xdist_load()
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/raid/fran/miniconda3/lib/python3.12/site-packages/pluggy/_manager.py", line