Visitar URL original
Crash with `console_output_style=times` and skipping tests · Issue #13478 · pytest-dev/pytest · GitHub
Skip to content

Crash with console_output_style=times and skipping tests #13478

Closed

Description

@pjonsson

Running uv run pytest -o console_output_style=times tests/test_repro.py tests/test_repro_skip.py gives me the following backtrace:

tests/test_repro.py .
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/_pytest/main.py", line 289, in wrap_session
INTERNALERROR>     session.exitstatus = doit(config, session) or 0
INTERNALERROR>                          ^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/_pytest/main.py", line 343, in _main
INTERNALERROR>     config.hook.pytest_runtestloop(session=session)
INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
INTERNALERROR>     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
INTERNALERROR>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
INTERNALERROR>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
INTERNALERROR>     raise exception
INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
INTERNALERROR>     teardown.throw(exception)
INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/_pytest/logging.py", line 801, in pytest_runtestloop
INTERNALERROR>     return (yield)  # Run all the tests.
INTERNALERROR>             ^^^^^
INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/pluggy/_callers.py", line 152, in _multicall
INTERNALERROR>     teardown.send(result)
INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/_pytest/terminal.py", line 693, in pytest_runtestloop
INTERNALERROR>     self._write_progress_information_filling_space()
INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/_pytest/terminal.py", line 758, in _write_progress_information_filling_space
INTERNALERROR>     msg = self._get_progress_information_message()
INTERNALERROR>           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/_pytest/terminal.py", line 734, in _get_progress_information_message
INTERNALERROR>     return format_node_duration(sum(r.duration for r in not_reported))
INTERNALERROR>                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/_pytest/terminal.py", line 734, in <genexpr>
INTERNALERROR>     return format_node_duration(sum(r.duration for r in not_reported))
INTERNALERROR>                                     ^^^^^^^^^^
INTERNALERROR> AttributeError: 'CollectReport' object has no attribute 'duration'. Did you mean: 'location'?

========================= 1 passed, 1 skipped in 0.01s =========================

Running either of them separately works:

$ uv run pytest -o console_output_style=times tests/test_repro.py
============================= test session starts ==============================
platform linux -- Python 3.12.3, pytest-8.4.0, pluggy-1.6.0
rootdir: /code
configfile: pyproject.toml
plugins: pytest_httpserver-1.1.3, cov-6.1.1, hypothesis-6.133.2
collected 1 item

tests/test_repro.py .                                                   265.2us

============================== 1 passed in 0.06s ===============================
$  uv run pytest -o console_output_style=times tests/test_repro_skip.py
============================= test session starts ==============================
platform linux -- Python 3.12.3, pytest-8.4.0, pluggy-1.6.0
rootdir: /code
configfile: pyproject.toml
plugins: pytest_httpserver-1.1.3, cov-6.1.1, hypothesis-6.133.2
collected 0 items / 2 skipped

============================== 2 skipped in 0.06s ==============================

This is the content of test_repro.py:

def test_hello() -> None:
    pass

and this is the content of test_repro_skip.py:

import pytest

name = pytest.importorskip("fakepackage")

The other console_output_styles do not give a backtrace for me.

Pytest 8.4.0 on Ubuntu 24.04.

$ uv pip list
Using Python 3.12.3 environment at: /env
Package                       Version
----------------------------- -------------------------------
accessible-pygments           0.0.5
affine                        2.4.0
alabaster                     1.0.0
alembic                       1.16.1
antimeridian                  0.4.1
astroid                       3.3.10
asttokens                     3.0.0
attrs                         25.3.0
autodocsumm                   0.2.14
babel                         2.17.0
beautifulsoup4                4.13.4
bleach                        6.2.0
boto3                         1.38.25
boto3-stubs                   1.38.25
botocore                      1.38.25
botocore-stubs                1.38.25
bottleneck                    1.5.0
cachetools                    6.0.0
certifi                       2025.4.26
cffi                          1.17.1
cftime                        1.6.4.post1
charset-normalizer            3.4.2
ciso8601                      2.3.2
click                         8.2.1
click-plugins                 1.1.1
cligj                         0.7.2
cloudpickle                   3.1.1
commonmark                    0.9.1
coverage                      7.8.2
cryptography                  45.0.3
dask                          2025.5.1
datacube                      1.9.5.dev13+g9e14c18c.d20250603
dc-tests-io                   1.0
dcio-example                  1.1
decorator                     5.2.1
defusedxml                    0.7.1
deprecat                      2.1.3
dill                          0.4.0
distributed                   2025.5.1
docutils                      0.21.2
executing                     2.2.0
fastjsonschema                2.21.1
fsspec                        2025.5.1
geoalchemy2                   0.17.1
greenlet                      3.2.2
hypothesis                    6.131.30
idna                          3.10
imagesize                     1.4.1
iniconfig                     2.1.0
ipython                       9.2.0
ipython-pygments-lexers       1.1.1
isort                         6.0.1
jedi                          0.19.2
jinja2                        3.1.6
jmespath                      1.0.1
jsonschema                    4.24.0
jsonschema-specifications     2025.4.1
jupyter-client                8.6.3
jupyter-core                  5.8.1
jupyterlab-pygments           0.3.0
lark                          1.2.2
locket                        1.0.0
mako                          1.3.10
markupsafe                    3.0.2
matplotlib-inline             0.1.7
mccabe                        0.7.0
mistune                       3.1.3
moto                          5.1.5
msgpack                       1.1.0
mypy                          1.15.0
mypy-extensions               1.1.0
nbclient                      0.10.2
nbconvert                     7.16.6
nbformat                      5.10.4
nbsphinx                      0.9.7
netcdf4                       1.7.2
numpy                         2.2.6
odc-geo                       0.4.10
packaging                     25.0
pandas                        2.2.3
pandas-stubs                  2.2.3.250527
pandocfilters                 1.5.1
parso                         0.8.4
partd                         1.4.2
pexpect                       4.9.0
pip                           25.1.1
platformdirs                  4.3.8
pluggy                        1.6.0
prompt-toolkit                3.0.51
psutil                        7.0.0
psycopg2                      2.9.10
ptyprocess                    0.7.0
pure-eval                     0.2.3
pycparser                     2.22
pydata-sphinx-theme           0.16.1
pygments                      2.19.1
pylint                        3.3.7
pyparsing                     3.2.3
pyproj                        3.7.1
pytest                        8.3.5
pytest-cov                    6.1.1
pytest-httpserver             1.1.3
python-dateutil               2.9.0.post0
pytz                          2025.2
pyyaml                        6.0.2
pyzmq                         26.4.0
rasterio                      1.4.3
recommonmark                  0.7.1
referencing                   0.36.2
requests                      2.32.3
responses                     0.25.7
rpds-py                       0.25.1
ruamel-yaml                   0.18.11
ruamel-yaml-clib              0.2.12
ruff                          0.11.11
s3transfer                    0.13.0
setuptools                    80.9.0
shapely                       2.1.1
six                           1.17.0
snowballstemmer               3.0.1
sortedcontainers              2.4.0
soupsieve                     2.7
sphinx                        8.1.3
sphinx-autodoc-typehints      3.0.1
sphinx-click                  6.0.0
sphinx-design                 0.6.1
sphinxcontrib-applehelp       2.0.0
sphinxcontrib-devhelp         2.0.0
sphinxcontrib-htmlhelp        2.1.0
sphinxcontrib-jsmath          1.0.1
sphinxcontrib-qthelp          2.0.0
sphinxcontrib-serializinghtml 2.0.0
sqlalchemy                    2.0.41
stack-data                    0.6.3
tblib                         3.1.0
tinycss2                      1.4.0
tomlkit                       0.13.2
toolz                         1.0.0
tornado                       6.5.1
traitlets                     5.14.3
types-affine                  0.1.0
types-awscrt                  0.27.2
types-cachetools              6.0.0.20250525
types-cffi                    1.17.0.20250523
types-jsonschema              4.24.0.20250528
types-psutil                  7.0.0.20250516
types-pyopenssl               24.1.0.20240722
types-python-dateutil         2.9.0.20250516
types-pytz                    2025.2.0.20250516
types-pyyaml                  6.0.12.20250516
types-redis                   4.6.0.20241004
types-s3transfer              0.13.0
types-setuptools              80.9.0.20250529
typing-extensions             4.13.2
tzdata                        2025.2
urllib3                       2.4.0
wcwidth                       0.2.13
webencodings                  0.5.1
werkzeug                      3.1.3
wrapt                         1.17.2
xarray                        2025.4.0
xmltodict                     0.14.2
zict                          3.0.0
  • a detailed description of the bug or problem you are having
  • output of pip list from the virtual environment you are using
  • pytest and operating system versions
  • minimal example if possible

Activity

  1. RonnyPfannschmidt commented on Jun 3, 2025

    @RonnyPfannschmidt
    Member

    Looks like the code never acvouted for collection reports

    We need more typechecks it seems and a test

    A ugly nasty workaround would be a session scope fixture to import

  2. coder-aditi commented on Jun 27, 2025

    @coder-aditi
    Contributor

    Hey @RonnyPfannschmidt @pjonsson @nicoddemus, I would suggest a modification like this for this issue, need your review and suggestions, kindly let me know. Thanks.

  3. added a commit that references this issue on Jul 1, 2025
    3e8a268
  4. added a commit that references this issue on Jul 1, 2025
    f87289c
  5. added a commit that references this issue on Jul 2, 2025
    c5a75f2
  6. added a commit that references this issue on Jul 16, 2025
    275b7df
  7. j4784713-ops commented on Sep 8, 2025

    @j4784713-ops

    Running uv run pytest -o console_output_style=times tests/test_repro.py tests/test_repro_skip.py gives me the following backtrace:

    tests/test_repro.py .
    INTERNALERROR> Traceback (most recent call last):
    INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/_pytest/main.py", line 289, in wrap_session
    INTERNALERROR>     session.exitstatus = doit(config, session) or 0
    INTERNALERROR>                          ^^^^^^^^^^^^^^^^^^^^^
    INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/_pytest/main.py", line 343, in _main
    INTERNALERROR>     config.hook.pytest_runtestloop(session=session)
    INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    INTERNALERROR>     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    INTERNALERROR>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    INTERNALERROR>     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    INTERNALERROR>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    INTERNALERROR>     raise exception
    INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    INTERNALERROR>     teardown.throw(exception)
    INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/_pytest/logging.py", line 801, in pytest_runtestloop
    INTERNALERROR>     return (yield)  # Run all the tests.
    INTERNALERROR>             ^^^^^
    INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/pluggy/_callers.py", line 152, in _multicall
    INTERNALERROR>     teardown.send(result)
    INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/_pytest/terminal.py", line 693, in pytest_runtestloop
    INTERNALERROR>     self._write_progress_information_filling_space()
    INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/_pytest/terminal.py", line 758, in _write_progress_information_filling_space
    INTERNALERROR>     msg = self._get_progress_information_message()
    INTERNALERROR>           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/_pytest/terminal.py", line 734, in _get_progress_information_message
    INTERNALERROR>     return format_node_duration(sum(r.duration for r in not_reported))
    INTERNALERROR>                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    INTERNALERROR>   File "/code/.venv/lib/python3.12/site-packages/_pytest/terminal.py", line 734, in <genexpr>
    INTERNALERROR>     return format_node_duration(sum(r.duration for r in not_reported))
    INTERNALERROR>                                     ^^^^^^^^^^
    INTERNALERROR> AttributeError: 'CollectReport' object has no attribute 'duration'. Did you mean: 'location'?
    
    ========================= 1 passed, 1 skipped in 0.01s =========================
    

    Running either of them separately works:

    $ uv run pytest -o console_output_style=times tests/test_repro.py
    ============================= test session starts ==============================
    platform linux -- Python 3.12.3, pytest-8.4.0, pluggy-1.6.0
    rootdir: /code
    configfile: pyproject.toml
    plugins: pytest_httpserver-1.1.3, cov-6.1.1, hypothesis-6.133.2
    collected 1 item
    
    tests/test_repro.py .                                                   265.2us
    
    ============================== 1 passed in 0.06s ===============================
    $  uv run pytest -o console_output_style=times tests/test_repro_skip.py
    ============================= test session starts ==============================
    platform linux -- Python 3.12.3, pytest-8.4.0, pluggy-1.6.0
    rootdir: /code
    configfile: pyproject.toml
    plugins: pytest_httpserver-1.1.3, cov-6.1.1, hypothesis-6.133.2
    collected 0 items / 2 skipped
    
    ============================== 2 skipped in 0.06s ==============================
    

    This is the content of test_repro.py:

    def test_hello() -> None:
    pass
    and this is the content of test_repro_skip.py:

    import pytest

    name = pytest.importorskip("fakepackage")
    The other console_output_styles do not give a backtrace for me.

    Pytest 8.4.0 on Ubuntu 24.04.

    $ uv pip list
    Using Python 3.12.3 environment at: /env
    Package                       Version
    ----------------------------- -------------------------------
    accessible-pygments           0.0.5
    affine                        2.4.0
    alabaster                     1.0.0
    alembic                       1.16.1
    antimeridian                  0.4.1
    astroid                       3.3.10
    asttokens                     3.0.0
    attrs                         25.3.0
    autodocsumm                   0.2.14
    babel                         2.17.0
    beautifulsoup4                4.13.4
    bleach                        6.2.0
    boto3                         1.38.25
    boto3-stubs                   1.38.25
    botocore                      1.38.25
    botocore-stubs                1.38.25
    bottleneck                    1.5.0
    cachetools                    6.0.0
    certifi                       2025.4.26
    cffi                          1.17.1
    cftime                        1.6.4.post1
    charset-normalizer            3.4.2
    ciso8601                      2.3.2
    click                         8.2.1
    click-plugins                 1.1.1
    cligj                         0.7.2
    cloudpickle                   3.1.1
    commonmark                    0.9.1
    coverage                      7.8.2
    cryptography                  45.0.3
    dask                          2025.5.1
    datacube                      1.9.5.dev13+g9e14c18c.d20250603
    dc-tests-io                   1.0
    dcio-example                  1.1
    decorator                     5.2.1
    defusedxml                    0.7.1
    deprecat                      2.1.3
    dill                          0.4.0
    distributed                   2025.5.1
    docutils                      0.21.2
    executing                     2.2.0
    fastjsonschema                2.21.1
    fsspec                        2025.5.1
    geoalchemy2                   0.17.1
    greenlet                      3.2.2
    hypothesis                    6.131.30
    idna                          3.10
    imagesize                     1.4.1
    iniconfig                     2.1.0
    ipython                       9.2.0
    ipython-pygments-lexers       1.1.1
    isort                         6.0.1
    jedi                          0.19.2
    jinja2                        3.1.6
    jmespath                      1.0.1
    jsonschema                    4.24.0
    jsonschema-specifications     2025.4.1
    jupyter-client                8.6.3
    jupyter-core                  5.8.1
    jupyterlab-pygments           0.3.0
    lark                          1.2.2
    locket                        1.0.0
    mako                          1.3.10
    markupsafe                    3.0.2
    matplotlib-inline             0.1.7
    mccabe                        0.7.0
    mistune                       3.1.3
    moto                          5.1.5
    msgpack                       1.1.0
    mypy                          1.15.0
    mypy-extensions               1.1.0
    nbclient                      0.10.2
    nbconvert                     7.16.6
    nbformat                      5.10.4
    nbsphinx                      0.9.7
    netcdf4                       1.7.2
    numpy                         2.2.6
    odc-geo                       0.4.10
    packaging                     25.0
    pandas                        2.2.3
    pandas-stubs                  2.2.3.250527
    pandocfilters                 1.5.1
    parso                         0.8.4
    partd                         1.4.2
    pexpect                       4.9.0
    pip                           25.1.1
    platformdirs                  4.3.8
    pluggy                        1.6.0
    prompt-toolkit                3.0.51
    psutil                        7.0.0
    psycopg2                      2.9.10
    ptyprocess                    0.7.0
    pure-eval                     0.2.3
    pycparser                     2.22
    pydata-sphinx-theme           0.16.1
    pygments                      2.19.1
    pylint                        3.3.7
    pyparsing                     3.2.3
    pyproj                        3.7.1
    pytest                        8.3.5
    pytest-cov                    6.1.1
    pytest-httpserver             1.1.3
    python-dateutil               2.9.0.post0
    pytz                          2025.2
    pyyaml                        6.0.2
    pyzmq                         26.4.0
    rasterio                      1.4.3
    recommonmark                  0.7.1
    referencing                   0.36.2
    requests                      2.32.3
    responses                     0.25.7
    rpds-py                       0.25.1
    ruamel-yaml                   0.18.11
    ruamel-yaml-clib              0.2.12
    ruff                          0.11.11
    s3transfer                    0.13.0
    setuptools                    80.9.0
    shapely                       2.1.1
    six                           1.17.0
    snowballstemmer               3.0.1
    sortedcontainers              2.4.0
    soupsieve                     2.7
    sphinx                        8.1.3
    sphinx-autodoc-typehints      3.0.1
    sphinx-click                  6.0.0
    sphinx-design                 0.6.1
    sphinxcontrib-applehelp       2.0.0
    sphinxcontrib-devhelp         2.0.0
    sphinxcontrib-htmlhelp        2.1.0
    sphinxcontrib-jsmath          1.0.1
    sphinxcontrib-qthelp          2.0.0
    sphinxcontrib-serializinghtml 2.0.0
    sqlalchemy                    2.0.41
    stack-data                    0.6.3
    tblib                         3.1.0
    tinycss2                      1.4.0
    tomlkit                       0.13.2
    toolz                         1.0.0
    tornado                       6.5.1
    traitlets                     5.14.3
    types-affine                  0.1.0
    types-awscrt                  0.27.2
    types-cachetools              6.0.0.20250525
    types-cffi                    1.17.0.20250523
    types-jsonschema              4.24.0.20250528
    types-psutil                  7.0.0.20250516
    types-pyopenssl               24.1.0.20240722
    types-python-dateutil         2.9.0.20250516
    types-pytz                    2025.2.0.20250516
    types-pyyaml                  6.0.12.20250516
    types-redis                   4.6.0.20241004
    types-s3transfer              0.13.0
    types-setuptools              80.9.0.20250529
    typing-extensions             4.13.2
    tzdata                        2025.2
    urllib3                       2.4.0
    wcwidth                       0.2.13
    webencodings                  0.5.1
    werkzeug                      3.1.3
    wrapt                         1.17.2
    xarray                        2025.4.0
    xmltodict                     0.14.2
    zict                          3.0.0
    
    • a detailed description of the bug or problem you are having[x] output of pip list from the virtual environment you are using[x] pytest and operating system versions[x] minimal example if possible
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    topic: reportingrelated to terminal output and user-facing messages and errorstype: bugproblem that needs to be addressed

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions