Ich habe eine Sitzung geladen und arbeitet Halterung in conftest.pyZugang autouse Befestigung ohne es zu dem Verfahren Argument hinzufügen zu müssen
@pytest.fixture(scope="session",autouse=True)
def log(request):
testlog = LogUtil(testconf.LOG_NAME).get()
return testlog
Dies wird scoped wie erwartet, wenn ein Testverfahren in mytest.py ist definiert als folgt:
def test_hello_world(self, log):
log.info("hello world test")
gibt es eine Möglichkeit das Gerät zu verwenden, ohne (seit seiner autouse enabled) die extra „log“ Parameter zu testen Methoden hinzufügen?
def test_hello_world(self):
log.info("hello world test") #log is not found
@pytest.mark.usefixtures("log")
def test_hello_world2(self):
log.info("hello world test") #log is not found
def test_hello_world3(self,log):
log.info("hello world test") #log object is accessible here
Fehler - Nameerror: name 'log' ist nicht
definiert
Danke für die Antwort. Es wird mühsam, jedem Test Argumente hinzuzufügen, wenn die Anzahl der Tests zu wachsen beginnt. Gerade jetzt die Optionen zu sein scheinen: 1) Erstellen Sie eine globale Variable und aktualisieren Sie es das Gerät in conftest.py definiert mit 2) Erstellen Sie eine Basisklasse mit einer statischen Variablen (keine Halterung erforderlich) – tj23
** I stimme völlig mit [tj23] überein (https://stackoverflow.com/users/1257065/tj23). ** Die Unfähigkeit, auf Fixtures zuzugreifen, die implizit entweder über 'autouse' oder 'usefixtures' deklariert wurden, macht solche Fixtures für die meisten Zwecke unbrauchbar mein Fall, _all_ Zwecke. Die übliche Alternative ist, dass ** (A) ** eine einzelne abstrakte Fixture definiert, die mehrere reale Fixtures erfordert, und dann ** (B) ** erfordern Tests die erstere und nicht die letztere. In meinem Fall verbieten die Scoping-Beschränkungen des Fixtures dies jedoch. _Urgh! _ –
Ich stimme nicht zu - persönlich benutze ich oft auch Fixtures, um einfach etwas Setup/Teardown (z. B. Patching) zu haben und brauche keinen Zugriff darauf. Könnten Sie erläutern, warum Sie * mehrere * echte Fixtures und eine abstrakte Fixture benötigen? Was ist dein Anwendungsfall? Vielleicht sollten wir das aber zum [pytest tracker] (https://github.com/pytest-dev/pytest/issues) bringen. –