New issue 687: fixture finalization is delayed https://bitbucket.org/hpk42/pytest/issue/687/fixture-finalization-is-delayed
Thomas Tanner: According to the documentation http://pytest.org/latest/fixture.html#fixture-finalization-executing-teardown-code "The fin function will execute when the last test using the fixture in the module has finished execution." Either the documentation is wrong, misleading or there is a bug in pytest. Example: ``` #!python from pytest import fixture @fixture(scope='session') def fix1(request): print 'fix1' def fin(): print '-fix1' request.addfinalizer(fin) return 'fix1' @fixture(scope='session') def fix2(request): print 'fix2' def fin(): print '-fix2' request.addfinalizer(fin) return 'fix2' def test_f1(fix1): print 'f1',fix1 def test_f2(fix2): print 'f2',fix2 ``` results in ``` #! test.py::test_f1 fix1 f1 fix1 PASSED test.py::test_f2 fix2 f2 fix2 PASSED-fix2 -fix1 ``` as you can see, fin of fix1 is called not immediately after the last test depending on it (f1), but after all other tests (f2) and fix2's fin. Just in case pytest won't guarantee finalization of a fixture after all its dependencies have been executed: what would be the best way to ensure mutually-exclusive (session) fixtures are finalized before the next one is setup? _______________________________________________ pytest-commit mailing list pytest-commit@python.org https://mail.python.org/mailman/listinfo/pytest-commit