When tearing down fixtures and one finalizer (registered via
request.addfinalizer) fails (with an uncaught exception or with
pytest.fail) - no other finalizers will be run.
Of course - the fixture finalizer could be fixed to not throw exceptions and the problem would go away.
However, I find it useful to be able to make assertions in the fixture teardown. I have a stubbing fixture (similar to pytest's monkeypatch). It checks that the stubbed methods actually was called during the tests, and triggers assertions otherwise. When this happens in one test case, it causes database fixture and all other kinds of failures for all other tests.
I am not sure this is a valid use case for fixtures, if not, feel free to close it. :)