import os import shutil def pytest_runtest_teardown(item, nextitem): """ Teardown method to clean up folder creations during testing. This method is called after each test, but performs deletions only after an entire test class was executed. :param item: tested item :param nextitem: next item (could be None, if no following test is available) """ if nextitem is None or item.cls != nextitem.cls: # clean up all TestExperiment and data folder that have been created during testing rel_path = os.path.relpath(item.fspath.dirname, os.path.abspath(__file__)) path = os.path.dirname(__file__) for stage in filter(None, rel_path.replace("..", ".").split("/")): path = os.path.abspath(os.path.join(path, stage)) list_dir = os.listdir(path) if "data" in list_dir and path != os.path.dirname(__file__): # do not delete data folder in src shutil.rmtree(os.path.join(path, "data"), ignore_errors=True) if "TestExperiment" in list_dir: shutil.rmtree(os.path.join(path, "TestExperiment"), ignore_errors=True) else: pass # nothing to do if next test is from same test class