I have some tests organized in several classes. I already have a test fixture with scope=class so that it would run before suite(class) of tests. However, I need to execute a function after some specific tests. Lets say I have 100 tests in a class, I already have a fixture that will execute a function before these tests, but I also want to run a function after 2-3 of these tests.
What is the best approach to achieve that? Can it be done with fixtures or anything else ?
First, write a fixture that will execute after a test finishes:
@pytest.fixture
def foo():
yield
print("do stuff after test")
Docs: Fixture finalization / executing teardown code
Now mark each test that should invoke this fixture with usefixtures("foo")
:
@pytest.mark.usefixtures("foo")
def test_spam():
...