Fixtures don't appear to call teardown fns if the testing is interrupted with SIGINT (hitting control C).
I tested xunit style for setup/teardown at module, class and method level.
I tested funcarg style for setup/teardown at session, module and function level.
All were consistent.
Without interrupting all the setup and teardown fns were called correctly, which is good.
However, interrupting the test will result in the teardown fns not being called.
I didn't test non distributed testing - so I make a (potentially incorrect) assumption that it behaves the same way.
I suggest that once a setup fn has been called the corresponding teardown should be called at all costs. Exceptions, hitting control c, whatever should be handled so that each teardown fn is called in turn even if a teardown raises a new exception (a teardown failure to release a resource should not cause another resource to be leaked).