Ich arbeite mit einer Codebasis welche meistens mit unittest geschrieben wird. Die Tests werden mit Pytest ausgeführt. Ich versuche, die Tests zu vereinfachen, indem ich einige von ihnen parametriere. Um auf dieses Ziel hin zu arbeiten, versuche ich zu lernen, wie pytest Fixtures zu verwenden sind und einige der existierenden unitestbasierten Tests umzuformen. Die aktuellen Tests haben eine globale Befestigung in conftest.py:Chain multiple fixtures pytest/unittest hybrid
@pytest.fixture(autouse=True)
def register_cleanup():
yield True
print("cleaning up database")
Jetzt möchte ich eine Halterung hinzuzufügen, die zu einem meiner Testmodule, etwas entlang der Linien von
@pytest.fixture()
def foo_fixture():
print("setup fixture")
yield
print("tear down fixture")
class Foo(unittest.TestCase):
def setUp(self):
print('unittest setUp()')
def test(self):
print('test')
jedoch spezifisch ist, Die print()
Anweisungen in dieser Modulhalterung werden nie ausgeführt. Als Zwischenschritt behalte ich die auf Unittests basierende Struktur und ergänze sie. Ist es möglich, dies so zu machen, wie ich es will, oder muss ich Unittest komplett verwerfen und direkt zu Pytest gehen?
Wo würden Sie diese Leuchte erwarten verwendet werden? Wolltest du auch hier 'autouse = True' einschalten? Im Allgemeinen werden Fixtures nur ausgeführt, wenn sie ein Parameter für den Test sind, und sie sind weniger allgemeine Aufreinigungsmechanismen als Bereichsvoraussetzungen. – Cireo
@Cireo Meinst du, ich sollte 'foo_fixture()' 'autouse = True' ähnlich wie 'register_cleanup hinzufügen() '? –
@Cireo Fühlen Sie sich frei, dies als Antwort zu posten. –