Ich bin neu zu pytest (und Python). Ich habe eine Reihe von Dingen, die nur einmal vor all meinen Tests ausgeführt werden (zB: - Starten des Android-Emulators, Erstellen eines Appium-Treibers, Instanziieren aller meiner Seiten-Klassen, damit ich sie in Tests verwenden kann). Übrigens, ich habe meine Tests in mehreren Klassen. Nach wenig Lektüre dachte ich @pytest.yield_fixture(scope="session", autouse=True)
den Trick tun würde .. aber das ist nicht das, was ich sehe .. Siehe unten Beispiel ..py.test-Methode nur einmal pro Lauf ausgeführt werden
import pytest
class TestBase():
@pytest.yield_fixture(scope="session", autouse=True)
def fixture_session(self):
# start emulator, create driver and instantiate all page
# classes with driver create above
print "\n in fixture_session! @session "
yield
# tear down
print "in fixture_session after yield @session"
@pytest.yield_fixture(scope="module", autouse=True)
def fixture_module(request):
print 'in fixture_module @module'
# tear down
yield
print "in fixture_module after yield @module"
class TestOne(TestBase):
def test_a(self):
# write test with page objects created in TestBase
print "in test_a of TestOne"
def test_b(self):
print "in test_b of TestOne"
class TestTwo(TestBase):
def test_a(self):
print "in test_a of TestTwo"
def test_b(self):
print "in test_b of TestTwo"
Ausführen dieses
test_base.py
in fixture_session! @session
in fixture_module @module
in test_a of TestOne
.in test_b of TestOne
.
in fixture_session! @session
in fixture_module @module
in test_a of TestTwo
.in test_b of TestTwo
.in fixture_module after yield @module
in fixture_module after yield @module
in fixture_session after yield @session
in fixture_session after yield @session
gibt Was bin ich ?? Warum wird @pytest.yield_fixture(scope="session", autouse=True)
pro Testklasse ausgeführt und warum ist der Abbruch nach dem vollständigen Testlauf erfolgt? Alles in allem, ist das der richtige Weg, ein Test-Framework in Pytest zu erstellen?