New issue 441: parametrized fixture + module scope + failing test + '-x' option = invalid fixture finalizer output https://bitbucket.org/hpk42/pytest/issue/441/parametrized-fixture-module-scope-failing
Jurko Gospodnetić: The following test demonstrates the issue. You can run it as a part of the internal pytest test suite. ``` import fnmatch def test_module_fixture_finalizer_output_capture(testdir): """ Demonstrates a fixture finalizer output capture defect in pytest 2.5.0. pytest should not allow any test script output to be displayed uncontrolled unless its output capture has been disabled. If we have a parametrized module scoped fixture and a failing test using that fixture then running the test suite with the '-x' option seems to produce uncaptured fixture finalizer output (first fixture parametrization only). """ testdir.makepyfile(r"""\ import pytest @pytest.fixture(scope="module", params=["A", "B"]) def ola(request): print("<I AM NOT HERE> fixture (%s)" % (request.param,)) class frufru: def __init__(self, param): self.param = param def __call__(self): print("<I AM NOT HERE> finalizer <%s>" % (self.param,)) request.addfinalizer(frufru(request.param)) return request.param def test_me(ola): print("<I AM NOT HERE> test <%s>" % (ola,)) pytest.fail() """) # Using '--tb=no' should prevent all regularly captured test output to be # displayed. Using '-q' simply removes some irrelevant test output thus # making this external test's failure output shorter. for extra_params in ([], ["-x"]): output = testdir.runpytest("--tb=no", "-q", *extra_params).stdout.lines for line_index, line in enumerate(output): assert "<I AM NOT HERE>" not in line ``` Hope this helps. Best regards, Jurko Gospodnetić _______________________________________________ pytest-commit mailing list pytest-commit@python.org https://mail.python.org/mailman/listinfo/pytest-commit