8000 Option for pytest.fail to not print exception context · Issue #11457 · pytest-dev/pytest · GitHub
[go: up one dir, main page]

Skip to content
Option for pytest.fail to not print exception context  #11457
@VincentVanlaer

Description

@VincentVanlaer

Context

Currently, one of the ways to use pytest.fail is to include all of the necessary information in the reason field and disabling the traceback with pytrace = False. While this does suppress tracebacks of the exception itself and any exceptions in the context, it still prints the context. I use this in python-trio/pytest-trio#136 for example to report full tracebacks when a timeout happens (capturing all async tasks). Currently, this implementation prints the set of tracebacks twice as an internal exception (which also contains the tracebacks) is converted to a test failure with pytest.fail.

Feature request

I would like to have a way to suppress this context as well, either by default if pytrace = False is set, or with another option. This is the behavior I would have expected from pytrace in the first place.

Alternatives

It is possible to do some juggling with the exceptions to remove the context as follows:

import pytest


def test_fail():
    try:
        import some_missing_package
    except ImportError:
        try:
            pytest.fail(reason="You need to install some_missing_package for this test to succeed", pytrace=False)
        except BaseException as e:
            e.__cause__ = None
            raise

I think this would be reasonable to implement in a plugin for example, but might be a bit to cumbersome/obscure for use in tests. But that is not where my use case lies, so this might a case of the XY problem. Another solution would be to use a report hook to customize the reporting of certain special exceptions.

It might be that these alternatives are acceptable (I presume that this case is not a common occurrence) and adding this feature is not worth the maintenance/testing/change in behavior. But I believe it is still worth considering at least.

Metadata

Metadata

Assignees

No one assigned

    Labels

    topic: reportingrelated to terminal output and user-facing messages and errorstype: proposalproposal for a new feature, often to gather opinions or design the API around the new feature

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0