API-Referenz¶
Diese Seite enthält die vollständige Referenz zur API von pytest.
Konstanten¶
pytest.__version__¶
Die aktuelle pytest-Version als String
>>> import pytest
>>> pytest.__version__
'7.0.0'
pytest.version_tuple¶
Hinzugefügt in Version 7.0.
Die aktuelle pytest-Version als Tupel
>>> import pytest
>>> pytest.version_tuple
(7, 0, 0)
Bei Vorabversionen ist die letzte Komponente ein String mit der Vorabversionsnummer
>>> import pytest
>>> pytest.version_tuple
(7, 0, '0rc1')
Funktionen¶
pytest.approx¶
- approx(expected, rel=None, abs=None, nan_ok=False)[Quelle]¶
Prüft, ob zwei Zahlen (oder zwei geordnete Zahlenfolgen) bis auf eine bestimmte Toleranz gleich sind.
Aufgrund der Gleitkomma-Arithmetik: Probleme und Einschränkungen sind Zahlen, die wir intuitiv als gleich erwarten würden, nicht immer gleich.
>>> 0.1 + 0.2 == 0.3 False
Dieses Problem tritt häufig beim Schreiben von Tests auf, z. B. wenn sichergestellt werden soll, dass Gleitkommazahlen die erwarteten Werte haben. Eine Möglichkeit, dieses Problem zu lösen, besteht darin, zu prüfen, ob zwei Gleitkommazahlen innerhalb einer bestimmten Toleranz gleich sind.
>>> abs((0.1 + 0.2) - 0.3) < 1e-6 True
Vergleiche wie dieser sind jedoch mühsam zu schreiben und schwer zu verstehen. Außerdem werden absolute Vergleiche wie der obige normalerweise nicht empfohlen, da es keine Toleranz gibt, die für alle Situationen gut funktioniert.
1e-6ist gut für Zahlen um1, aber zu klein für sehr große Zahlen und zu groß für sehr kleine. Es ist besser, die Toleranz als Bruchteil des erwarteten Werts auszudrücken, aber relative Vergleiche dieser Art sind noch schwieriger korrekt und prägnant zu schreiben.Die Klasse
approxführt Gleitkommavergleiche mit einer möglichst intuitiven Syntax durch.>>> from pytest import approx >>> 0.1 + 0.2 == approx(0.3) True
Die gleiche Syntax funktioniert auch für geordnete Zahlenfolgen.
>>> (0.1 + 0.2, 0.2 + 0.4) == approx((0.3, 0.6)) True
numpy-Arrays>>> import numpy as np >>> np.array([0.1, 0.2]) + np.array([0.2, 0.4]) == approx(np.array([0.3, 0.6])) True
Und für ein
numpy-Array gegen einen Skalar.>>> import numpy as np >>> np.array([0.1, 0.2]) + np.array([0.2, 0.1]) == approx(0.3) True
Es werden nur geordnete Sequenzen unterstützt, da
approxdie relative Position der Sequenzen eindeutig ermitteln muss. Das bedeutet, dasssetsund andere ungeordnete Sequenzen nicht unterstützt werden.Schließlich können auch Wörterbuchwerte verglichen werden.
>>> {'a': 0.1 + 0.2, 'b': 0.2 + 0.4} == approx({'a': 0.3, 'b': 0.6}) True
Der Vergleich ist wahr, wenn beide Abbildungen dieselben Schlüssel haben und ihre jeweiligen Werte den erwarteten Toleranzen entsprechen.
Toleranzen
Standardmäßig betrachtet
approxZahlen innerhalb einer relativen Toleranz von1e-6(d. h. ein Millionstel) ihres erwarteten Werts als gleich. Diese Behandlung würde zu überraschenden Ergebnissen führen, wenn der erwartete Wert0.0wäre, da nichts außer0.0selbst relativ nahe an0.0liegt. Um diesen Fall weniger überraschend zu handhaben, betrachtetapproxauch Zahlen innerhalb einer absoluten Toleranz von1e-12ihres erwarteten Werts als gleich. Unendlich und NaN sind Sonderfälle. Unendlich wird unabhängig von der relativen Toleranz nur mit sich selbst als gleich betrachtet. NaN wird standardmäßig nicht als gleich zu irgendetwas betrachtet, aber Sie können es mit sich selbst als gleich behandeln, indem Sie das Argumentnan_okauf True setzen. (Dies soll den Vergleich von Arrays erleichtern, die NaN als "keine Daten" verwenden.)Sowohl die relative als auch die absolute Toleranz können durch Übergabe von Argumenten an den
approx-Konstruktor geändert werden.>>> 1.0001 == approx(1) False >>> 1.0001 == approx(1, rel=1e-3) True >>> 1.0001 == approx(1, abs=1e-3) True
Wenn Sie
absangeben, aber nichtrel, wird der Vergleich die relative Toleranz überhaupt nicht berücksichtigen. Mit anderen Worten, zwei Zahlen, die innerhalb der Standard-Relativtoleranz von1e-6liegen, werden immer noch als ungleich betrachtet, wenn sie die angegebene absolute Toleranz überschreiten. Wenn Sie sowohlabsals auchrelangeben, werden die Zahlen als gleich betrachtet, wenn eine der beiden Toleranzen erfüllt ist.>>> 1 + 1e-8 == approx(1) True >>> 1 + 1e-8 == approx(1, abs=1e-12) False >>> 1 + 1e-8 == approx(1, rel=1e-6, abs=1e-12) True
Nicht-numerische Typen
Sie können
approxauch zum Vergleichen von nicht-numerischen Typen oder Dictionaries und Sequenzen, die nicht-numerische Typen enthalten, verwenden. In diesem Fall wird auf strikte Gleichheit zurückgegriffen. Dies kann nützlich sein, um Dictionaries und Sequenzen zu vergleichen, die optionale Werte enthalten können.>>> {"required": 1.0000005, "optional": None} == approx({"required": 1, "optional": None}) True >>> [None, 1.0000005] == approx([None,1]) True >>> ["foo", 1.0000005] == approx([None,1]) False
Wenn Sie darüber nachdenken,
approxzu verwenden, möchten Sie vielleicht wissen, wie es sich im Vergleich zu anderen guten Methoden zum Vergleichen von Gleitkommazahlen verhält. All diese Algorithmen basieren auf relativen und absoluten Toleranzen und sollten größtenteils übereinstimmen, aber sie weisen sinnvolle Unterschiede auf.math.isclose(a, b, rel_tol=1e-9, abs_tol=0.0): True, wenn die relative Toleranz in Bezug aufaoderberfüllt ist oder wenn die absolute Toleranz erfüllt ist. Da die relative Toleranz in Bezug auf beideaundbberechnet wird, ist dieser Test symmetrisch (d. h., wederanochbist ein "Referenzwert"). Sie müssen eine absolute Toleranz angeben, wenn Sie mit0.0vergleichen möchten, da standardmäßig keine Toleranz vorhanden ist. Weitere Informationen:math.isclose().numpy.isclose(a, b, rtol=1e-5, atol=1e-8): True, wenn der Unterschied zwischenaundbkleiner ist als die Summe der relativen Toleranz in Bezug aufbund der absoluten Toleranz. Da die relative Toleranz nur in Bezug aufbberechnet wird, ist dieser Test asymmetrisch und Sie könnenbals Referenzwert betrachten. Die Unterstützung für den Vergleich von Sequenzen wird durchnumpy.allclose()bereitgestellt. Weitere Informationen: numpy.isclose.unittest.TestCase.assertAlmostEqual(a, b): True, wennaundbinnerhalb einer absoluten Toleranz von1e-7liegen. Es wird keine relative Toleranz berücksichtigt, daher ist diese Funktion für sehr große oder sehr kleine Zahlen nicht geeignet. Außerdem ist sie nur in Unterklassen vonunittest.TestCaseverfügbar und ist unschön, da sie nicht PEP8 folgt. Weitere Informationen:unittest.TestCase.assertAlmostEqual().a == pytest.approx(b, rel=1e-6, abs=1e-12): True, wenn die relative Toleranz in Bezug aufberfüllt ist oder wenn die absolute Toleranz erfüllt ist. Da die relative Toleranz nur in Bezug aufbberechnet wird, ist dieser Test asymmetrisch und Sie könnenbals Referenzwert betrachten. Im Sonderfall, dass Sie explizit eine absolute Toleranz, aber keine relative Toleranz angeben, wird nur die absolute Toleranz berücksichtigt.
Hinweis
approxkann numpy-Arrays verarbeiten, aber wir empfehlen die spezialisierten Testhelfer in Testunterstützung, wenn Sie Unterstützung für Vergleiche, NaNs oder ULP-basierte Toleranzen benötigen.Um Strings mit Regex abzugleichen, können Sie Matches aus dem re_assert-Paket verwenden.
Hinweis
Im Gegensatz zur eingebauten Gleichheit betrachtet diese Funktion Booleans als ungleich zu numerischem Null oder Eins. Zum Beispiel
>>> 1 == approx(True) False
Warnung
Geändert in Version 3.2.
Um inkonsistentes Verhalten zu vermeiden, wird für Vergleiche mit
>,>=,<und<=einTypeErrorausgelöst. Das folgende Beispiel verdeutlicht das Problem.assert approx(0.1) > 0.1 + 1e-10 # calls approx(0.1).__gt__(0.1 + 1e-10) assert 0.1 + 1e-10 > approx(0.1) # calls approx(0.1).__lt__(0.1 + 1e-10)
Im zweiten Beispiel erwartet man, dass
approx(0.1).__le__(0.1 + 1e-10)aufgerufen wird. Stattdessen wirdapprox(0.1).__lt__(0.1 + 1e-10)für den Vergleich verwendet. Dies liegt daran, dass die Aufrufhierarchie von Rich Comparisons einem festen Verhalten folgt. Weitere Informationen:object.__ge__().Geändert in Version 3.7.1:
approxlöst einenTypeErroraus, wenn es auf einen Dictionary-Wert oder ein Sequenzelement vom nicht-numerischen Typ stößt.Geändert in Version 6.1.0:
approxgreift für nicht-numerische Typen auf strikte Gleichheit zurück, anstattTypeErrorauszulösen.
pytest.fail¶
Tutorial: Wie man skip und xfail verwendet, um mit Tests umzugehen, die nicht erfolgreich sein können
- fail(reason[, pytrace=True])¶
Schlägt einen ausführenden Test explizit mit der angegebenen Meldung fehl.
- Parameter:
- Löst aus:
pytest.fail.Exception – Die ausgelöste Ausnahme.
- class pytest.fail.Exception¶
Die von
pytest.fail()ausgelöste Ausnahme.
pytest.skip¶
- skip(reason[, allow_module_level=False])¶
Überspringt einen ausführenden Test mit der angegebenen Meldung.
Diese Funktion sollte nur während des Testens (Setup, Aufruf oder Teardown) oder während der Sammlung unter Verwendung des Flags
allow_module_levelaufgerufen werden. Diese Funktion kann auch in Doctests aufgerufen werden.- Parameter:
reason (str) – Die Meldung, die dem Benutzer als Grund für das Überspringen angezeigt wird.
allow_module_level (bool) –
Ermöglicht den Aufruf dieser Funktion auf Modulebene. Das Auslösen der Skip-Ausnahme auf Modulebene stoppt die Ausführung des Moduls und verhindert die Sammlung aller Tests im Modul, auch derjenigen, die vor dem
skip-Aufruf definiert wurden.Standardmäßig False.
- Löst aus:
pytest.skip.Exception – Die ausgelöste Ausnahme.
Hinweis
Es ist besser, den Marker pytest.mark.skipif zu verwenden, wenn möglich, um einen Test unter bestimmten Bedingungen wie nicht übereinstimmenden Plattformen oder Abhängigkeiten zu überspringen. Verwenden Sie similarly die Direktive
# doctest: +SKIP(siehedoctest.SKIP), um einen Doctest statisch zu überspringen.
- class pytest.skip.Exception¶
Die von
pytest.skip()ausgelöste Ausnahme.
pytest.importorskip¶
- importorskip(modname, minversion=None, reason=None, *, exc_type=None)[Quelle]¶
Importiert und gibt das angeforderte Modul
modnamezurück, oder überspringt den aktuellen Test, wenn das Modul nicht importiert werden kann.- Parameter:
modname (str) – Der Name des zu importierenden Moduls.
minversion (str | None) – Wenn angegeben, muss das Attribut
__version__des importierten Moduls mindestens diese Mindestversion haben, andernfalls wird der Test trotzdem übersprungen.reason (str | None) – Wenn angegeben, wird dieser Grund als Meldung angezeigt, wenn das Modul nicht importiert werden kann.
exc_type (type[ImportError] | None) –
Die Ausnahme, die abgefangen werden sollte, um Module zu überspringen. Muss
ImportErroroder eine Unterklasse sein.Wenn das Modul importiert werden kann, aber einen
ImportErrorauslöst, gibt pytest eine Warnung an den Benutzer aus, da Benutzer oft erwarten, dass das Modul nicht gefunden wird (was stattdessenModuleNotFoundErrorauslösen würde).Diese Warnung kann durch explizites Übergeben von
exc_type=ImportErrorunterdrückt werden.Siehe Standardverhalten von pytest.importorskip bezüglich ImportError für Details.
- Gibt zurück:
Das importierte Modul. Dies sollte seinem kanonischen Namen zugewiesen werden.
- Löst aus:
pytest.skip.Exception – Wenn das Modul nicht importiert werden kann.
- Rückgabetyp:
Beispiel
docutils = pytest.importorskip("docutils")
Hinzugefügt in Version 8.2: Der Parameter
exc_type.
pytest.xfail¶
- xfail(reason='')¶
Schlägt einen ausführenden Test oder eine Setup-Funktion imperativ mit der angegebenen Begründung fehl.
Diese Funktion sollte nur während des Testens (Setup, Aufruf oder Teardown) aufgerufen werden.
Kein anderer Code wird nach der Verwendung von
xfail()ausgeführt (sie wird intern durch Auslösen einer Ausnahme implementiert).- Parameter:
reason (str) – Die Meldung, die dem Benutzer als Grund für das xfail angezeigt wird.
Hinweis
Es ist besser, den Marker pytest.mark.xfail zu verwenden, wenn möglich, um einen Test unter bestimmten Bedingungen wie bekannten Fehlern oder fehlenden Funktionen als xfail zu deklarieren.
- Löst aus:
pytest.xfail.Exception – Die ausgelöste Ausnahme.
- class pytest.xfail.Exception¶
Die von
pytest.xfail()ausgelöste Ausnahme.
pytest.exit¶
- exit(reason[, returncode=None])¶
Beendet den Testprozess.
- Parameter:
reason (str) – Die Meldung, die als Grund für das Beenden von pytest angezeigt wird. reason hat nur einen Standardwert, da
msgveraltet ist.returncode (int | None) – Rückgabecode, der beim Beenden von pytest verwendet werden soll. None bedeutet dasselbe wie
0(kein Fehler), dasselbe wie beisys.exit().
- Löst aus:
pytest.exit.Exception – Die ausgelöste Ausnahme.
- class pytest.exit.Exception¶
Die von
pytest.exit()ausgelöste Ausnahme.
pytest.main¶
Tutorial: Aufrufen von pytest aus Python-Code
- main(args=None, plugins=None)[Quelle]¶
Führt einen In-Prozess-Testlauf durch.
- Parameter:
args (list[str] | PathLike[str] | None) – Liste der Befehlszeilenargumente. Wenn
Noneoder nicht angegeben, werden standardmäßig Argumente direkt aus der Befehlszeile des Prozesses gelesen (sys.argv).plugins (Sequence[str | object] | None) – Liste der Plugin-Objekte, die während der Initialisierung automatisch registriert werden.
- Gibt zurück:
Ein Exit-Code.
- Rückgabetyp:
pytest.param¶
- param(*values[, id][, marks])[Quelle]¶
Gibt einen Parameter in pytest.mark.parametrize-Aufrufen oder parametrisierten Fixtures an.
@pytest.mark.parametrize( "test_input,expected", [ ("3+5", 8), pytest.param("6*9", 42, marks=pytest.mark.xfail), ], ) def test_eval(test_input, expected): assert eval(test_input) == expected
- Parameter:
values (object) – Variable Argumente der Werte des Parametersatzes, in Ordnung.
marks (MarkDecorator | Collection[MarkDecorator | Mark]) –
Eine einzelne Markierung oder eine Liste von Markierungen, die auf diesen Parametersatz angewendet werden sollen.
pytest.mark.usefixtures kann nicht über diesen Parameter hinzugefügt werden.
id (str | Literal[pytest.HIDDEN_PARAM] | None) –
Die ID, die diesem Parametersatz zugeordnet werden soll.
Hinzugefügt in Version 8.4: pytest.HIDDEN_PARAM bedeutet, den Parametersatz aus dem Testnamen zu verbergen. Kann höchstens 1 Mal verwendet werden, da Testnamen eindeutig sein müssen.
pytest.raises¶
Tutorial: Assertions über ungefähre Gleichheit
- with raises(expected_exception: type[E] | tuple[type[E], ...], *, match: str | Pattern[str] | None = ..., check: Callable[[E], bool] = ...) RaisesExc[E] as excinfo[Quelle]¶
- with raises(*, match: str | Pattern[str], check: Callable[[BaseException], bool] = ...) RaisesExc[BaseException] as excinfo
- with raises(*, check: Callable[[BaseException], bool]) RaisesExc[BaseException] as excinfo
- mit raises(expected_exception: type[E] | tuple[type[E], ...], func: Callable[..., Any], *args: Any, **kwargs: Any) ExceptionInfo[E] als excinfo
Assertet, dass ein Codeblock/Funktionsaufruf eine Ausnahme auslöst, oder eine ihrer Unterklassen.
- Parameter:
expected_exception –
Der erwartete Ausnahmetyp oder ein Tupel, wenn eine von mehreren möglichen Ausnahmetypen erwartet wird. Beachten Sie, dass auch Unterklassen der übergebenen Ausnahmen übereinstimmen.
Dies ist kein erforderlicher Parameter. Sie können auch nur
matchund/odercheckverwenden, um die ausgelöste Ausnahme zu überprüfen.match (str | re.Pattern[str] | None) –
Wenn angegeben, ein String, der einen regulären Ausdruck enthält, oder ein regulärer Ausdrucksobjekt, das gegen die String-Darstellung der Ausnahme und ihre PEP 678
__notes__mittelsre.search()getestet wird.Um einen literalen String abzugleichen, der Sonderzeichen enthalten kann, kann das Muster zuerst mit
re.escape()escaped werden.(Dies wird nur verwendet, wenn
pytest.raisesals Context Manager verwendet wird, und wird ansonsten an die Funktion weitergegeben. Bei Verwendung vonpytest.raisesals Funktion können Sie verwenden:pytest.raises(Exc, func, match="bestanden bei").match("mein muster").)check (Callable[[BaseException], bool]) –
Hinzugefügt in Version 8.4.
Wenn angegeben, ein aufrufbares Objekt, das nach der Überprüfung des Typs und des Match-Regex, falls angegeben, mit der Ausnahme als Parameter aufgerufen wird. Wenn es
Truezurückgibt, wird es als Übereinstimmung betrachtet, andernfalls als fehlgeschlagene Übereinstimmung.
Verwenden Sie
pytest.raisesals Context Manager, der die Ausnahme des angegebenen Typs oder einer seiner Unterklassen abfängt.>>> import pytest >>> with pytest.raises(ZeroDivisionError): ... 1/0
Wenn der Codeblock nicht die erwartete Ausnahme (
ZeroDivisionErrorim obigen Beispiel) oder gar keine Ausnahme auslöst, schlägt die Prüfung stattdessen fehl.Sie können auch das Schlüsselwortargument
matchverwenden, um zu behaupten, dass die Ausnahme mit einem Text oder Regex übereinstimmt.>>> with pytest.raises(ValueError, match='must be 0 or None'): ... raise ValueError("value must be 0 or None") >>> with pytest.raises(ValueError, match=r'must be \d+$'): ... raise ValueError("value must be 42")
Das Argument
matchdurchsucht die formatierte Ausnahmezichenfolge, die alle PEP-678__notes__enthält.>>> with pytest.raises(ValueError, match=r"had a note added"): ... e = ValueError("value must be 42") ... e.add_note("had a note added") ... raise e
Das Argument
checkmuss, wenn es angegeben wird, True zurückgeben, wenn es mit der ausgelösten Ausnahme aufgerufen wird, damit die Übereinstimmung erfolgreich ist, andernfalls wird eineAssertionErrorausgelöst.>>> import errno >>> with pytest.raises(OSError, check=lambda e: e.errno == errno.EACCES): ... raise OSError(errno.EACCES, "no permission to view")
Der Context Manager erzeugt ein
ExceptionInfoObjekt, das zur Untersuchung der Details der abgefangenen Ausnahme verwendet werden kann.>>> with pytest.raises(ValueError) as exc_info: ... raise ValueError("value must be 42") >>> assert exc_info.type is ValueError >>> assert exc_info.value.args[0] == "value must be 42"
Warnung
Da
pytest.raisesUnterklassen abgleicht, seien Sie vorsichtig, wenn Sie es verwenden, umExceptionso abzugleichen:# Careful, this will catch ANY exception raised. with pytest.raises(Exception): some_function()
Da
Exceptiondie Basisklasse fast aller Ausnahmen ist, kann dies leicht echte Fehler verdecken, bei denen der Benutzer dies erwartet hat, eine bestimmte Ausnahme auszulösen, aber aufgrund eines Fehlers, der während einer Refaktorierung eingeführt wurde, eine andere Ausnahme ausgelöst wird.Vermeiden Sie die Verwendung von
pytest.raiseszum Abfangen vonException, es sei denn, Sie sind sicher, dass Sie wirklich jede ausgelöste Ausnahme abfangen möchten.Hinweis
Bei der Verwendung von
pytest.raisesals Context Manager ist zu beachten, dass normale Context Manager-Regeln gelten und die ausgelöste Ausnahme die letzte Zeile im Geltungsbereich des Context Managers sein muss. Codezeilen danach im Geltungsbereich des Context Managers werden nicht ausgeführt. Zum Beispiel:>>> value = 15 >>> with pytest.raises(ValueError) as exc_info: ... if value > 10: ... raise ValueError("value must be <= 10") ... assert exc_info.type is ValueError # This will not execute.
Stattdessen muss der folgende Ansatz gewählt werden (beachten Sie den Unterschied im Geltungsbereich):
>>> with pytest.raises(ValueError) as exc_info: ... if value > 10: ... raise ValueError("value must be <= 10") ... >>> assert exc_info.type is ValueError
Erwartung von Ausnahmegruppen
Wenn Ausnahmen erwartet werden, die in
BaseExceptionGroupoderExceptionGroupeingepackt sind, sollten Sie stattdessenpytest.RaisesGroupverwenden.Verwendung mit
pytest.mark.parametrizeBei der Verwendung von pytest.mark.parametrize ist es möglich, Tests so zu parametrisieren, dass einige Durchläufe eine Ausnahme auslösen und andere nicht.
Weitere Beispiele finden Sie unter Parametrisierung von bedingtem Auslösen.
Siehe auch
Assertions über ungefähre Gleichheit für weitere Beispiele und detaillierte Diskussionen.
Legacy-Form
Es ist möglich, eine aufrufbare Funktion anzugeben, indem ein aufzurufendes Lambda übergeben wird.
>>> raises(ZeroDivisionError, lambda: 1/0) <ExceptionInfo ...>
oder Sie können eine beliebige aufrufbare Funktion mit Argumenten angeben.
>>> def f(x): return 1/x ... >>> raises(ZeroDivisionError, f, 0) <ExceptionInfo ...> >>> raises(ZeroDivisionError, f, x=0) <ExceptionInfo ...>
Die obige Form wird vollständig unterstützt, ist aber für neuen Code nicht empfehlenswert, da die Context Manager-Form als lesbarer und weniger fehleranfällig gilt.
Hinweis
Ähnlich wie bei abgefangenen Ausnahmeobjekten in Python kann das explizite Löschen lokaler Referenzen auf zurückgegebene
ExceptionInfoObjekte dem Python-Interpreter helfen, seine Garbage Collection zu beschleunigen.Das Löschen dieser Referenzen unterbricht einen Referenzzyklus (
ExceptionInfo–> abgefangene Ausnahme –> Frame-Stack, der die Ausnahme auslöst –> aktueller Frame-Stack –> lokale Variablen –>ExceptionInfo), was dazu führt, dass Python alle Objekte, die aus diesem Zyklus referenziert werden (einschließlich aller lokalen Variablen im aktuellen Frame), bis zum nächsten zyklischen Garbage Collection-Lauf am Leben erhält. Detailliertere Informationen finden Sie in der offiziellen Python-Dokumentation für die try-Anweisung.
pytest.deprecated_call¶
Tutorial: Sicherstellen, dass Code eine DeprecationWarning auslöst
- mit deprecated_call(*, match: str | Pattern[str] | None = ...) WarningsRecorder[source]¶
- mit deprecated_call(func: Callable[[...], T], *args: Any, **kwargs: Any) T
Assertet, dass Code eine
DeprecationWarning,PendingDeprecationWarningoderFutureWarningerzeugt.Diese Funktion kann als Context Manager verwendet werden.
>>> import warnings >>> def api_call_v2(): ... warnings.warn('use v3 of this api', DeprecationWarning) ... return 200 >>> import pytest >>> with pytest.deprecated_call(): ... assert api_call_v2() == 200
Sie kann auch durch Übergabe einer Funktion und
*argsund**kwargsverwendet werden. In diesem Fall wird sichergestellt, dass der Aufruf vonfunc(*args, **kwargs)einen der oben genannten Warnungstypen erzeugt. Der Rückgabewert ist der Rückgabewert der Funktion.In der Context Manager-Form können Sie das Schlüsselwortargument
matchverwenden, um zu behaupten, dass die Warnung mit einem Text oder Regex übereinstimmt.Der Context Manager erzeugt eine Liste von
warnings.WarningMessageObjekten, eines für jede ausgelöste Warnung.
pytest.register_assert_rewrite¶
Tutorial: Assertion Rewriting
- register_assert_rewrite(*names)[source]¶
Registriert einen oder mehrere Modulnamen, die beim Import neu geschrieben werden sollen.
Diese Funktion stellt sicher, dass dieses Modul oder alle Module innerhalb des Pakets ihre assert-Anweisungen neu geschrieben bekommen. Daher sollten Sie sicherstellen, dass Sie dies aufrufen, bevor das Modul tatsächlich importiert wird, normalerweise in Ihrer __init__.py, wenn Sie ein Plugin sind, das ein Paket verwendet.
- Parameter:
names (str) – Die zu registrierenden Modulnamen.
pytest.warns¶
Tutorial: Assertions für Warnungen mit der Funktion warns
- mit warns(expected_warning: type[Warning] | tuple[type[Warning], ...] = <class 'Warning'>, *, match: str | ~re.Pattern[str] | None = None) WarningsChecker[source]¶
- mit warns(expected_warning: type[Warning] | tuple[type[Warning], ...], func: Callable[[...], T], *args: Any, **kwargs: Any) T
Assertet, dass Code eine bestimmte Warnungsklasse auslöst.
Insbesondere kann der Parameter
expected_warningeine Warnungsklasse oder ein Tupel von Warnungsklassen sein, und der Code innerhalb deswithBlocks muss mindestens eine Warnung dieser Klasse oder Klassen ausgeben.Dieser Helfer erzeugt eine Liste von
warnings.WarningMessageObjekten, eines für jede ausgegebene Warnung (unabhängig davon, ob es sich um eineexpected_warninghandelt oder nicht). Seit pytest 8.0 werden nicht übereinstimmende Warnungen beim Schließen des Kontexts erneut ausgegeben.Diese Funktion kann als Context Manager verwendet werden.
>>> import pytest >>> with pytest.warns(RuntimeWarning): ... warnings.warn("my warning", RuntimeWarning)
In der Context Manager-Form können Sie das Schlüsselwortargument
matchverwenden, um zu behaupten, dass die Warnung mit einem Text oder Regex übereinstimmt.>>> with pytest.warns(UserWarning, match='must be 0 or None'): ... warnings.warn("value must be 0 or None", UserWarning) >>> with pytest.warns(UserWarning, match=r'must be \d+$'): ... warnings.warn("value must be 42", UserWarning) >>> with pytest.warns(UserWarning): # catch re-emitted warning ... with pytest.warns(UserWarning, match=r'must be \d+$'): ... warnings.warn("this is not here", UserWarning) Traceback (most recent call last): ... Failed: DID NOT WARN. No warnings of type ...UserWarning... were emitted...
Verwendung mit
pytest.mark.parametrizeBei der Verwendung von pytest.mark.parametrize ist es möglich, Tests so zu parametrisieren, dass einige Durchläufe eine Warnung auslösen und andere nicht.
Dies könnte auf die gleiche Weise wie bei Ausnahmen erreicht werden. Weitere Beispiele finden Sie unter Parametrisierung von bedingtem Auslösen.
pytest.freeze_includes¶
Tutorial: Pytest einfrieren
Markierungen¶
Markierungen können verwendet werden, um Metadaten auf Testfunktionen (aber nicht auf Fixtures) anzuwenden, auf die dann von Fixtures oder Plugins zugegriffen werden kann.
pytest.mark.filterwarnings¶
Tutorial: @pytest.mark.filterwarnings
Fügt markierten Testelementen Warnungsfilter hinzu.
- pytest.mark.filterwarnings(filter)¶
- Parameter:
filter (str) –
Eine Warnungsspezifikations-Zeichenkette, die sich aus den Inhalten des Tupels
(action, message, category, module, lineno)zusammensetzt, wie im Abschnitt Der Warnungsfilter der Python-Dokumentation beschrieben, getrennt durch":". Optionale Felder können weggelassen werden. Für die Filterung übergebene Modulnamen werden nicht regex-escaped.Zum Beispiel
@pytest.mark.filterwarnings("ignore:.*usage will be deprecated.*:DeprecationWarning") def test_foo(): ...
pytest.mark.parametrize¶
Tutorial: Wie man Fixtures und Testfunktionen parametrisiert
Diese Markierung hat die gleiche Signatur wie pytest.Metafunc.parametrize(); siehe dort.
pytest.mark.skip¶
Tutorial: Testfunktionen überspringen
Überspringt bedingungslos eine Testfunktion.
pytest.mark.skipif¶
Tutorial: Testfunktionen überspringen
Überspringt eine Testfunktion, wenn eine Bedingung True ist.
- pytest.mark.skipif(condition, *, reason=None)¶
- Parameter:
condition (bool oder str) –
True/False, wenn die Bedingung übersprungen werden soll, oder eine Bedingungszeichenkette.reason (str) – Grund, warum die Testfunktion übersprungen wird.
pytest.mark.usefixtures¶
Tutorial: Fixtures in Klassen und Modulen mit usefixtures verwenden
Markiert eine Testfunktion als Verwendung der angegebenen Fixture-Namen.
- pytest.mark.usefixtures(*names)¶
- Parameter:
args – Die Namen der zu verwendenden Fixture, als Strings.
Hinweis
Bei der Verwendung von usefixtures in Hooks können Fixtures nur geladen werden, wenn sie auf eine Testfunktion angewendet werden, bevor das Test-Setup stattfindet (z. B. im Hook pytest_collection_modifyitems).
Beachten Sie auch, dass diese Markierung keine Auswirkungen hat, wenn sie auf Fixtures angewendet wird.
pytest.mark.xfail¶
Tutorial: XFail: Testfunktionen als erwartungsgemäß fehlerhaft markieren
Markiert eine Testfunktion als erwartungsgemäß fehlerhaft.
- pytest.mark.xfail(condition=False, *, reason=None, raises=None, run=True, strict=strict_xfail)¶
- Parameter:
condition (Union[bool, str]) – Bedingung für die Markierung der Testfunktion als xfail (
True/Falseoder eine Bedingungszeichenkette). Wenn es sich um einenboolhandelt, müssen Sie auchreasonangeben (siehe Bedingungszeichenkette).reason (str) – Grund, warum die Testfunktion als xfail markiert ist.
raises (Type[
Exception]) – Erwartete Ausnahmeklasse (oder Tupel von Klassen), die von der Testfunktion ausgelöst werden soll; andere Ausnahmen führen zum Fehlschlagen des Tests. Beachten Sie, dass Unterklassen der übergebenen Klassen ebenfalls zu einer Übereinstimmung führen (ähnlich wie dieexcept-Anweisung funktioniert).run (bool) – Ob die Testfunktion tatsächlich ausgeführt werden soll. Wenn
False, wird die Funktion immer xfail sein und nicht ausgeführt werden (nützlich, wenn eine Funktion einen Segfault verursacht).strict (bool) –
Wenn
False, wird die Funktion in der Terminalausgabe alsxfailedangezeigt, wenn sie fehlschlägt, und alsxpass, wenn sie erfolgreich ist. In beiden Fällen führt dies nicht dazu, dass die gesamte Testsuite fehlschlägt. Dies ist besonders nützlich, um flatterhafte Tests zu markieren (Tests, die zufällig fehlschlagen), um sie später zu behandeln.Wenn
True, wird die Funktion in der Terminalausgabe alsxfailedangezeigt, wenn sie fehlschlägt. Wenn sie jedoch unerwartet erfolgreich ist, wird die Testsuite fehlschlagen. Dies ist besonders nützlich, um Funktionen zu markieren, die immer fehlschlagen und bei denen es eine klare Anzeige geben sollte, wenn sie unerwartet erfolgreich sind (z. B. eine neue Version einer Bibliothek behebt einen bekannten Fehler).
Standardmäßig
strict_xfail, was standardmäßigFalseist.
Benutzerdefinierte Markierungen¶
Markierungen werden dynamisch über das Factory-Objekt pytest.mark erstellt und als Dekorator angewendet.
Zum Beispiel
@pytest.mark.timeout(10, "slow", method="thread")
def test_function(): ...
Erstellt und hängt ein Mark-Objekt an das gesammelte Item an, das dann von Fixtures oder Hooks mit Node.iter_markers abgerufen werden kann. Das mark-Objekt hat die folgenden Attribute
mark.args == (10, "slow")
mark.kwargs == {"method": "thread"}
Beispiel für die Verwendung mehrerer benutzerdefinierter Markierungen
@pytest.mark.timeout(10, "slow", method="thread")
@pytest.mark.slow
def test_function(): ...
Wenn Node.iter_markers oder Node.iter_markers_with_node mit mehreren Markierungen verwendet wird, wird die Markierung, die der Funktion am nächsten liegt, zuerst durchlaufen. Das obige Beispiel führt zu @pytest.mark.slow gefolgt von @pytest.mark.timeout(...).
Fixtures¶
Tutorial: Referenz zu Fixtures
Fixtures werden von Testfunktionen oder anderen Fixtures angefordert, indem sie als Argumentnamen deklariert werden.
Beispiel für einen Test, der ein Fixture benötigt
def test_output(capsys):
print("hello")
out, err = capsys.readouterr()
assert out == "hello\n"
Beispiel für ein Fixture, das ein anderes Fixture benötigt
@pytest.fixture
def db_session(tmp_path):
fn = tmp_path / "db.file"
return connect(fn)
Weitere Details finden Sie in der vollständigen Fixtures-Dokumentation.
@pytest.fixture¶
- @fixture(fixture_function: Callable[[...], object], *, scope: Literal['session', 'package', 'module', 'class', 'function'] | Callable[[str, Config], Literal['session', 'package', 'module', 'class', 'function']] = 'function', params: Iterable[object] | None = None, autouse: bool = False, ids: Sequence[object | None] | Callable[[Any], object | None] | None = None, name: str | None = None) FixtureFunctionDefinition[source]¶
- @fixture(fixture_function: None = None, *, scope: Literal['session', 'package', 'module', 'class', 'function'] | Callable[[str, Config], Literal['session', 'package', 'module', 'class', 'function']] = 'function', params: Iterable[object] | None = None, autouse: bool = False, ids: Sequence[object | None] | Callable[[Any], object | None] | None = None, name: str | None = None) FixtureFunctionMarker
Dekorator zum Markieren einer Fixture-Factory-Funktion.
Dieser Dekorator kann mit oder ohne Parameter verwendet werden, um eine Fixture-Funktion zu definieren.
Der Name der Fixture-Funktion kann später referenziert werden, um ihre Ausführung vor dem Ausführen von Tests zu veranlassen: Testmodule oder -klassen können den Marker
pytest.mark.usefixtures(fixturename)verwenden.Testfunktionen können Fixture-Namen direkt als Eingabeargumente verwenden, in diesem Fall wird die von der Fixture-Funktion zurückgegebene Fixture-Instanz injiziert.
Fixtures können ihre Werte an Testfunktionen über
return- oderyield-Anweisungen übergeben. Bei Verwendung vonyieldwird der Codeblock nach deryield-Anweisung unabhängig vom Testergebnis als Aufräumcode ausgeführt und muss genau einmal liefern.- Parameter:
scope –
Der Geltungsbereich, für den dieses Fixture geteilt wird; eines von
"function"(Standard),"class","module","package"oder"session".Dieser Parameter kann auch ein aufrufbares Objekt sein, das
(fixture_name, config)als Parameter erhält und einestrmit einem der oben genannten Werte zurückgeben muss.Weitere Informationen finden Sie unter Dynamischer Geltungsbereich in der Dokumentation.
params – Eine optionale Liste von Parametern, die zu mehreren Aufrufen der Fixture-Funktion und aller sie verwendenden Tests führen. Der aktuelle Parameter ist unter
request.paramverfügbar.autouse – Wenn True, wird die Fixture-Funktion für alle Tests aktiviert, die sie sehen können. Wenn False (Standard), ist ein expliziter Verweis erforderlich, um das Fixture zu aktivieren.
ids – Sequenz von IDs, die jeweils den Parametern entsprechen, sodass sie Teil der Test-ID sind. Wenn keine IDs angegeben werden, werden sie automatisch aus den Parametern generiert.
name – Der Name des Fixtures. Dies ist standardmäßig der Name der dekorierten Funktion. Wenn ein Fixture im selben Modul verwendet wird, in dem es definiert ist, wird der Funktionsname des Fixtures durch das Funktionsargument überschattet, das das Fixture anfordert. Eine Möglichkeit, dies zu lösen, besteht darin, die dekorierte Funktion
fixture_<fixturename>zu nennen und dann@pytest.fixture(name='<fixturename>')zu verwenden.
capfd¶
Tutorial: So erfassen Sie die Ausgabe von stdout/stderr
- capfd()[source]¶
Aktiviert die Texterfassung von Schreibvorgängen an Dateideskriptoren
1und2.Die erfasste Ausgabe steht über Aufrufe der Methode
capfd.readouterr()zur Verfügung, die ein benanntes Tupel(out, err)zurückgibt.outunderrsindtext-Objekte.Gibt eine Instanz von
CaptureFixture[str]zurück.Beispiel
def test_system_echo(capfd): os.system('echo "hello"') captured = capfd.readouterr() assert captured.out == "hello\n"
capfdbinary¶
Tutorial: So erfassen Sie die Ausgabe von stdout/stderr
- capfdbinary()[source]¶
Aktiviert die Byte-Erfassung von Schreibvorgängen an Dateideskriptoren
1und2.Die erfasste Ausgabe steht über Aufrufe der Methode
capfd.readouterr()zur Verfügung, die ein benanntes Tupel(out, err)zurückgibt.outunderrsindbyte-Objekte.Gibt eine Instanz von
CaptureFixture[bytes]zurück.Beispiel
def test_system_echo(capfdbinary): os.system('echo "hello"') captured = capfdbinary.readouterr() assert captured.out == b"hello\n"
caplog¶
Tutorial: So verwalten Sie Logging
- caplog()[source]¶
Zugriff auf und Steuerung von Log-Erfassung.
Erfasste Protokolle sind über die folgenden Eigenschaften/Methoden verfügbar
* caplog.messages -> list of format-interpolated log messages * caplog.text -> string containing formatted log output * caplog.records -> list of logging.LogRecord instances * caplog.record_tuples -> list of (logger_name, level, message) tuples * caplog.clear() -> clear captured records and formatted log output string
Gibt eine Instanz von
pytest.LogCaptureFixturezurück.
- final class LogCaptureFixture[source]¶
Bietet Zugriff und Steuerung der Log-Erfassung.
- property handler: LogCaptureHandler¶
Ruft den von der Fixture verwendeten Logging-Handler ab.
- get_records(when)[source]¶
Ruft die Logging-Records für eine der möglichen Testphasen ab.
- Parameter:
when (Literal['setup', 'call', 'teardown']) – Welche Testphase die Records abgerufen werden sollen. Gültige Werte sind: „setup“, „call“ und „teardown“.
- Gibt zurück:
Die Liste der erfassten Records im gegebenen Stadium.
- Rückgabetyp:
Hinzugefügt in Version 3.4.
- property record_tuples: list[tuple[str, int, str]]¶
Eine Liste einer reduzierten Version von Log-Records, die für Vergleiche von Assertionen bestimmt ist.
Das Format des Tupels ist
(logger_name, log_level, message)
- property messages: list[str]¶
Eine Liste von interpolierten Log-Nachrichten.
Im Gegensatz zu 'records', die die Formatzeichenfolge und Parameter für die Interpolation enthalten, sind die Log-Nachrichten in dieser Liste alle interpoliert.
Im Gegensatz zu 'text', das die Ausgabe des Handlers enthält, sind die Log-Nachrichten in dieser Liste ohne Pegel, Zeitstempel usw. verziert, was exakte Vergleiche zuverlässiger macht.
Beachten Sie, dass Traceback- oder Stack-Informationen (aus
logging.exception()oder den Argumentenexc_infooderstack_infofür die Logging-Funktionen) nicht enthalten sind, da diese vom Formatter im Handler hinzugefügt werden.Hinzugefügt in Version 3.7.
- set_level(level, logger=None)[source]¶
Setzt die Schwellenwertstufe eines Loggers für die Dauer eines Tests.
Protokollmeldungen, die weniger schwerwiegend sind als diese Stufe, werden nicht erfasst.
Geändert in Version 3.4: Die Stufen der von dieser Funktion geänderten Logger werden am Ende des Tests auf ihre ursprünglichen Werte zurückgesetzt.
Aktiviert die angeforderte Protokollierungsstufe, falls sie über
logging.disable()deaktiviert wurde.
- with at_level(level, logger=None)[source]¶
Kontextmanager, der die Stufe für die Erfassung von Logs festlegt. Nach dem Ende der 'with'-Anweisung wird die Stufe auf ihren ursprünglichen Wert zurückgesetzt.
Aktiviert die angeforderte Protokollierungsstufe, falls sie über
logging.disable()deaktiviert wurde.
- with filtering(filter_)[source]¶
Kontextmanager, der dem caplog-Handler temporär den angegebenen Filter hinzufügt und diesen Filter am Ende des Blocks wieder entfernt.
- Parameter:
filter – Ein benutzerdefiniertes
logging.Filter-Objekt.
Hinzugefügt in Version 7.5.
capsys¶
Tutorial: So erfassen Sie die Ausgabe von stdout/stderr
- capsys()[source]¶
Aktiviert die Texterfassung von Schreibvorgängen an
sys.stdoutundsys.stderr.Die erfasste Ausgabe steht über Aufrufe der Methode
capsys.readouterr()zur Verfügung, die ein benanntes Tupel(out, err)zurückgibt.outunderrsindtext-Objekte.Gibt eine Instanz von
CaptureFixture[str]zurück.Beispiel
def test_output(capsys): print("hello") captured = capsys.readouterr() assert captured.out == "hello\n"
- class CaptureFixture[source]¶
Objekt, das von den Fixtures
capsys,capsysbinary,capfdundcapfdbinaryzurückgegeben wird.
capteesys¶
Tutorial: So erfassen Sie die Ausgabe von stdout/stderr
- capteesys()[source]¶
Ermöglicht die gleichzeitige Texterfassung und die Weiterleitung von Schreibvorgängen an
sys.stdoutundsys.stderr, wie sie durch--capture=definiert sind.Die erfasste Ausgabe ist über
capteesys.readouterr()Aufrufe verfügbar, die ein(out, err)Namedtuple zurückgeben.outunderrsindtextObjekte.Die Ausgabe wird auch durchgeleitet, sodass sie "live" gedruckt, gemeldet oder beides werden kann, wie durch
--capture=definiert.Gibt eine Instanz von
CaptureFixture[str]zurück.Beispiel
def test_output(capteesys): print("hello") captured = capteesys.readouterr() assert captured.out == "hello\n"
capsysbinary¶
Tutorial: So erfassen Sie die Ausgabe von stdout/stderr
- capsysbinary()[Quelle]¶
Ermöglicht die Erfassung von Bytes, die in
sys.stdoutundsys.stderrgeschrieben werden.Die erfasste Ausgabe ist über
capsysbinary.readouterr()Aufrufe verfügbar, die ein(out, err)Namedtuple zurückgeben.outunderrsindbytesObjekte.Gibt eine Instanz von
CaptureFixture[bytes]zurück.Beispiel
def test_output(capsysbinary): print("hello") captured = capsysbinary.readouterr() assert captured.out == b"hello\n"
config.cache¶
Tutorial: So führen Sie fehlgeschlagene Tests erneut aus und behalten den Zustand zwischen Testläufen bei
Das Objekt config.cache ermöglicht es anderen Plugins und Fixtures, Werte über Testläufe hinweg zu speichern und abzurufen. Um darauf von Fixtures aus zuzugreifen, fordern Sie pytestconfig in Ihrem Fixture an und erhalten es mit pytestconfig.cache.
Intern verwendet das Cache-Plugin die einfache dumps/loads API des json Standardmoduls.
config.cache ist eine Instanz von pytest.Cache
- final class Cache[Quelle]¶
Instanz des
cacheFixtures.- mkdir(name)[Quelle]¶
Gibt ein Verzeichnispfadobjekt mit dem angegebenen Namen zurück.
Wenn das Verzeichnis noch nicht existiert, wird es erstellt. Sie können es verwenden, um Dateien zu verwalten, z. B. Datenbank-Dumps zwischen Testläufen zu speichern/abzurufen.
Hinzugefügt in Version 7.0.
- Parameter:
name (str) – Muss ein String sein, der keinen
/Trenner enthält. Stellen Sie sicher, dass der Name Ihre Plugin- oder Anwendungsidentifikatoren enthält, um Konflikte mit anderen Cache-Benutzern zu vermeiden.
- get(key, default)[Quelle]¶
Gibt den gecachten Wert für den angegebenen Schlüssel zurück.
Wenn noch kein Wert gecacht wurde oder der Wert nicht gelesen werden kann, wird der angegebene Standardwert zurückgegeben.
- Parameter:
key (str) – Muss ein durch
/getrennter Wert sein. Normalerweise ist der erste Name der Name Ihres Plugins oder Ihrer Anwendung.default – Der Wert, der im Falle eines Cache-Misses oder eines ungültigen Cache-Wertes zurückgegeben werden soll.
doctest_namespace¶
Tutorial: So führen Sie Doctests aus
- doctest_namespace()[Quelle]¶
Fixture, die ein
dictzurückgibt, das in den Namespace von Doctests injiziert wird.Normalerweise wird dieses Fixture in Verbindung mit einem anderen
autouseFixture verwendet.@pytest.fixture(autouse=True) def add_np(doctest_namespace): doctest_namespace["np"] = numpy
Weitere Details finden Sie unter: ‘doctest_namespace’ Fixture.
monkeypatch¶
Tutorial: So monkeypatchen/mocken Sie Module und Umgebungen
- monkeypatch()[Quelle]¶
Ein praktisches Fixture zum Monkey-Patching.
Das Fixture stellt diese Methoden zum Modifizieren von Objekten, Dictionaries oder
os.environbereit.Alle Modifikationen werden rückgängig gemacht, nachdem die anfordernde Testfunktion oder das Fixture beendet wurde. Der Parameter
raisingbestimmt, ob einKeyErroroderAttributeErrorausgelöst wird, wenn die Set-/Löschoperation das angegebene Ziel nicht hat.Um Modifikationen, die vom Fixture in einem eingeschränkten Geltungsbereich vorgenommen wurden, rückgängig zu machen, verwenden Sie
context().Gibt eine
MonkeyPatchInstanz zurück.
- final class MonkeyPatch[Quelle]¶
Hilfsklasse zum praktischen Monkey-Patching von Attributen/Elementen/Umgebungsvariablen/syspath.
Zurückgegeben vom
monkeypatchFixture.Geändert in Version 6.2: Kann jetzt auch direkt als
pytest.MonkeyPatch()verwendet werden, wenn das Fixture nicht verfügbar ist. In diesem Fall verwenden Siewith MonkeyPatch.context() as mp:oder denken Sie daran,undo()explizit aufzurufen.- classmethod with context()[Quelle]¶
Kontextmanager, der ein neues
MonkeyPatchObjekt zurückgibt, das alle imwithBlock durchgeführten Patches beim Beenden rückgängig macht.Beispiel
import functools def test_partial(monkeypatch): with monkeypatch.context() as m: m.setattr(functools, "partial", 3)
Nützlich in Situationen, in denen einige Patches vor dem Ende des Tests rückgängig gemacht werden sollen, z. B. das Mocken von
stdlibFunktionen, die pytest selbst stören könnten, wenn sie gemockt werden (Beispiele hierfür finden Sie unter #3290).
- setattr(target: str, name: object, value: ~_pytest.monkeypatch.Notset = <notset>, raising: bool = True) None[Quelle]¶
- setattr(target: object, name: str, value: object, raising: bool = True) None
Setzt den Attributwert auf dem Zielobjekt und merkt sich den alten Wert.
Zum Beispiel
import os monkeypatch.setattr(os, "getcwd", lambda: "/")
Der obige Code ersetzt die Funktion
os.getcwd()durch einlambda, das immer"/"zurückgibt.Zur Vereinfachung können Sie einen String als
targetangeben, der als gepunkteter Importpfad interpretiert wird, wobei der letzte Teil der Attributname ist.monkeypatch.setattr("os.getcwd", lambda: "/")
Löst
AttributeErroraus, wenn das Attribut nicht existiert, es sei denn,raisingist auf False gesetzt.Wo man patchen soll
monkeypatch.setattrfunktioniert, indem es das Objekt, auf das ein Name zeigt, (temporär) durch ein anderes ersetzt. Es kann viele Namen geben, die auf ein einzelnes Objekt zeigen. Damit das Patchen funktioniert, müssen Sie sicherstellen, dass Sie den vom zu testenden System verwendeten Namen patchen.Siehe den Abschnitt Wo man patchen soll in der Dokumentation zu
unittest.mock, die fürunittest.mock.patch()bestimmt ist, aber auch fürmonkeypatch.setattrgilt.
- delattr(target, name=<notset>, raising=True)[Quelle]¶
Löscht das Attribut
nameaustarget.Wenn kein
nameangegeben ist undtargetein String ist, wird es als gepunkteter Importpfad interpretiert, wobei der letzte Teil der Attributname ist.Löst AttributeError aus, wenn das Attribut nicht existiert, es sei denn,
raisingist auf False gesetzt.
- delitem(dic, name, raising=True)[Quelle]¶
Löscht
nameaus dem Dictionary.Löst
KeyErroraus, wenn es nicht existiert, es sei denn,raisingist auf False gesetzt.
- setenv(name, value, prepend=None)[Quelle]¶
Setzt die Umgebungsvariable
nameaufvalue.Wenn
prependein Zeichen ist, wird der aktuelle Umgebungsvariablenwert gelesen undvalueangehängt, das mit demprependZeichen verbunden ist.
- delenv(name, raising=True)[Quelle]¶
Löscht
nameaus der Umgebung.Löst
KeyErroraus, wenn es nicht existiert, es sei denn,raisingist auf False gesetzt.
- undo()[Quelle]¶
Macht vorherige Änderungen rückgängig.
Dieser Aufruf leert den Undo-Stack. Ein erneuter Aufruf hat keine Auswirkungen, es sei denn, Sie nehmen nach dem Undo-Aufruf weitere Monkey-Patches vor.
Normalerweise ist es nicht notwendig,
undo()aufzurufen, da dies beim Abbau automatisch geschieht.Hinweis
Dasselbe
monkeypatchFixture wird während einer einzelnen Testfunktionsausführung verwendet. Wennmonkeypatchsowohl von der Testfunktion selbst als auch von einem der Test-Fixtures verwendet wird, macht ein Aufruf vonundo()alle von beiden Funktionen vorgenommenen Änderungen rückgängig.Bevorzugen Sie die Verwendung von
context().
pytestconfig¶
- pytestconfig()[Quelle]¶
Session-basiertes Fixture, das das
pytest.ConfigObjekt der Sitzung zurückgibt.Beispiel
def test_foo(pytestconfig): if pytestconfig.get_verbosity() > 0: ...
pytester¶
Hinzugefügt in Version 6.2.
Stellt eine Pytester Instanz bereit, die zum Ausführen und Testen von pytest selbst verwendet werden kann.
Es stellt ein leeres Verzeichnis bereit, in dem pytest isoliert ausgeführt werden kann, und enthält Einrichtungen zum Schreiben von Tests, Konfigurationsdateien und zum Abgleichen mit der erwarteten Ausgabe.
Um es zu verwenden, fügen Sie es Ihrer obersten conftest.py Datei hinzu.
pytest_plugins = "pytester"
- final class Pytester[Quelle]¶
Einrichtungen zum Schreiben von Tests/Konfigurationsdateien, Ausführen von pytest in Isolation und Abgleichen mit der erwarteten Ausgabe, perfekt für Black-Box-Tests von pytest-Plugins.
Es versucht, den Testlauf so weit wie möglich von externen Faktoren zu isolieren, indem es das aktuelle Arbeitsverzeichnis auf
pathund Umgebungsvariablen während der Initialisierung setzt.- plugins: list[str | object]¶
Eine Liste von Plugins, die mit
parseconfig()undrunpytest()verwendet werden sollen. Anfangs ist dies eine leere Liste, aber Plugins können der Liste hinzugefügt werden.Wenn im Unterprozessmodus ausgeführt wird, geben Sie Plugins nach Namen (str) an – das Hinzufügen von Plugin-Objekten direkt wird nicht unterstützt.
- property path: Path¶
Temporäres Verzeichnispfad, das zum Erstellen von Dateien/Ausführen von Tests usw. verwendet wird.
- make_hook_recorder(pluginmanager)[Quelle]¶
Erstellt einen neuen
HookRecorderfür einenPytestPluginManager.
- chdir()[Quelle]¶
Wechselt in das temporäre Verzeichnis.
Dies geschieht automatisch bei der Instanziierung.
- makefile(ext, *args, **kwargs)[Quelle]¶
Erstellt neue Textdatei(en) im Testverzeichnis.
- Parameter:
ext (str) – Die Erweiterung, die die Datei(en) haben soll, einschließlich des Punkts, z. B.
.py.args (str) – Alle Argumente werden als Strings behandelt und mit Zeilenumbrüchen verbunden. Das Ergebnis wird als Inhalt in die Datei geschrieben. Der Name der Datei basiert auf der Testfunktion, die dieses Fixture anfordert.
kwargs (str) – Jedes Schlüsselwort ist der Name einer Datei, während der Wert davon in die Datei geschrieben wird.
- Gibt zurück:
Die erste erstellte Datei.
- Rückgabetyp:
Beispiele
pytester.makefile(".txt", "line1", "line2") pytester.makefile(".ini", pytest="[pytest]\naddopts=-rs\n")
Um Binärdateien zu erstellen, verwenden Sie
pathlib.Path.write_bytes()direkt.filename = pytester.path.joinpath("foo.bin") filename.write_bytes(b"...")
- makepyfile(*args, **kwargs)[Quelle]¶
Verkürzung für .makefile() mit der Erweiterung .py.
Standardmäßig wird der Testname mit der Erweiterung '.py' verwendet, z. B. test_foobar.py, wobei vorhandene Dateien überschrieben werden.
Beispiele
def test_something(pytester): # Initial file is created test_something.py. pytester.makepyfile("foobar") # To create multiple files, pass kwargs accordingly. pytester.makepyfile(custom="foobar") # At this point, both 'test_something.py' & 'custom.py' exist in the test directory.
- maketxtfile(*args, **kwargs)[Quelle]¶
Verkürzung für .makefile() mit der Erweiterung .txt.
Standardmäßig wird der Testname mit der Erweiterung '.txt' verwendet, z. B. test_foobar.txt, wobei vorhandene Dateien überschrieben werden.
Beispiele
def test_something(pytester): # Initial file is created test_something.txt. pytester.maketxtfile("foobar") # To create multiple files, pass kwargs accordingly. pytester.maketxtfile(custom="foobar") # At this point, both 'test_something.txt' & 'custom.txt' exist in the test directory.
- syspathinsert(path=None)[Quelle]¶
Fügt einen Verzeichnispfad zu
sys.pathhinzu, standardmäßigpath.Dies wird beim Sterben dieses Objekts am Ende jedes Tests automatisch rückgängig gemacht.
- mkdir(name)[source]¶
Erstellt ein neues (Unter-)Verzeichnis.
- mkpydir(name)[source]¶
Erstellt ein neues Python-Paket.
Dies erstellt ein (Unter-)Verzeichnis mit einer leeren
__init__.py-Datei, damit es als Python-Paket erkannt wird.
- copy_example(name=None)[source]¶
Kopiert eine Datei aus dem Projektverzeichnis in das Testverzeichnis.
- Parameter:
name (str | None) – Der Name der zu kopierenden Datei.
- Gibt zurück:
Pfad zum kopierten Verzeichnis (innerhalb von
self.path).- Rückgabetyp:
- getnode(config, arg)[source]¶
Ruft den Collection-Knoten einer Datei ab.
- Parameter:
config (Config) – Eine pytest-Konfiguration. Siehe
parseconfig()undparseconfigure()zum Erstellen.
- Gibt zurück:
Der Knoten.
- Rückgabetyp:
- getpathnode(path)[source]¶
Gibt den Collection-Knoten einer Datei zurück.
Dies ist ähnlich wie
getnode(), verwendet jedochparseconfigure(), um die (konfigurierte) pytest Config-Instanz zu erstellen.
- genitems(colitems)[source]¶
Generiert alle Test-Items aus einem Collection-Knoten.
Dies rekursiert in den Collection-Knoten und gibt eine Liste aller darin enthaltenen Test-Items zurück.
- runitem(source)[source]¶
Führt das „test_func“-Item aus.
Die aufrufende Testinstanz (Klasse, die die Testmethode enthält) muss eine Methode
.getrunner()bereitstellen, die einen Runner zurückgibt, der das Testprotokoll für ein einzelnes Item ausführen kann, z.B._pytest.runner.runtestprotocol.
- inline_runsource(source, *cmdlineargs)[source]¶
Führt ein Testmodul im Prozess mit
pytest.main()aus.Diese Ausführung schreibt „source“ in eine temporäre Datei und führt
pytest.main()darauf aus und gibt eineHookRecorder-Instanz für das Ergebnis zurück.- Parameter:
source (str) – Der Quellcode des Testmoduls.
cmdlineargs – Zusätzliche Befehlszeilenargumente, die verwendet werden sollen.
- inline_genitems(*args)[source]¶
Führt
pytest.main(['--collect-only'])im Prozess aus.Führt die Funktion
pytest.main()aus, um pytest im Testprozess selbst auszuführen, ähnlich wieinline_run(), gibt jedoch ein Tupel der gesammelten Items und eineHookRecorder-Instanz zurück.
- inline_run(*args, plugins=(), no_reraise_ctrlc=False)[source]¶
Führt
pytest.main()im Prozess aus und gibt einen HookRecorder zurück.Führt die Funktion
pytest.main()aus, um pytest im Testprozess selbst auszuführen. Das bedeutet, es kann eineHookRecorder-Instanz zurückgeben, die detailliertere Ergebnisse aus dieser Ausführung liefert, als durch Abgleich von stdout/stderr vonrunpytest()möglich ist.- Parameter:
args (str | PathLike[str]) – Befehlszeilenargumente, die an
pytest.main()übergeben werden.plugins – Zusätzliche Plugin-Instanzen, die die
pytest.main()-Instanz verwenden soll.no_reraise_ctrlc (bool) – Normalerweise lösen wir KeyboardInterrupts aus dem Kindlauf erneut aus. Wenn True, wird die KeyboardInterrupt-Ausnahme abgefangen.
- runpytest_inprocess(*args, **kwargs)[source]¶
Gibt das Ergebnis der Ausführung von pytest im Prozess zurück und bietet eine ähnliche Schnittstelle wie self.runpytest().
- runpytest(*args, **kwargs)[source]¶
Führt pytest inline oder in einem Subprozess aus, abhängig von der Befehlszeilenoption „–runpytest“, und gibt ein
RunResultzurück.
- parseconfig(*args)[source]¶
Gibt eine neue pytest
pytest.Config-Instanz aus den gegebenen Befehlszeilenargumenten zurück.Dies ruft den pytest-Bootstrapping-Code in _pytest.config auf, um einen neuen
pytest.PytestPluginManagerzu erstellen und den Hookpytest_cmdline_parseaufzurufen, um eine neuepytest.Config-Instanz zu erstellen.Wenn
pluginsmit Modulen gefüllt wurde, sollten diese mit dem Plugin-Manager registriert werden.
- parseconfigure(*args)[source]¶
Gibt eine neue, konfigurierte Config-Instanz von pytest zurück.
Gibt eine neue
pytest.Config-Instanz zurück, ähnlich wieparseconfig(), ruft aber auch den Hookpytest_configureauf.
- getitem(source, funcname='test_func')[source]¶
Gibt das Test-Item für eine Testfunktion zurück.
Schreibt den Quellcode in eine Python-Datei und führt die pytest-Sammlung auf dem resultierenden Modul aus. Gibt das Test-Item für den angeforderten Funktionsnamen zurück.
- getitems(source)[source]¶
Gibt alle aus dem Modul gesammelten Test-Items zurück.
Schreibt den Quellcode in eine Python-Datei und führt die pytest-Sammlung auf dem resultierenden Modul aus, wobei alle darin enthaltenen Test-Items zurückgegeben werden.
- getmodulecol(source, configargs=(), *, withinit=False)[source]¶
Gibt den Modul-Collection-Knoten für
sourcezurück.Schreibt
sourcemitmakepyfile()in eine Datei und führt dann die pytest-Sammlung darauf aus, wobei der Collection-Knoten für das Testmodul zurückgegeben wird.- Parameter:
source (str | PathLike[str]) – Der Quellcode des zu sammelnden Moduls.
configargs – Zusätzliche Argumente, die an
parseconfigure()übergeben werden sollen.withinit (bool) – Ob auch eine
__init__.py-Datei im selben Verzeichnis geschrieben werden soll, um sicherzustellen, dass es sich um ein Paket handelt.
- collect_by_name(modcol, name)[source]¶
Gibt den Collection-Knoten für den Namen aus der Modul-Collection zurück.
Durchsucht einen Modul-Collection-Knoten nach einem Collection-Knoten, der dem gegebenen Namen entspricht.
- Parameter:
modcol (Collector) – Ein Modul-Collection-Knoten; siehe
getmodulecol().name (str) – Der Name des zurückzugebenden Knotens.
- popen(cmdargs, stdout=-1, stderr=-1, stdin=NotSetType.token, **kw)[source]¶
Ruft
subprocess.Popenauf.Ruft
subprocess.Popenauf und stellt sicher, dass das aktuelle Arbeitsverzeichnis inPYTHONPATHenthalten ist.Sie sollten wahrscheinlich stattdessen
run()verwenden.
- run(*cmdargs, timeout=None, stdin=NotSetType.token)[source]¶
Führt einen Befehl mit Argumenten aus.
Führt einen Prozess mit
subprocess.Popenaus und speichert stdout und stderr.- Parameter:
cmdargs (str | PathLike[str]) – Die Sequenz von Argumenten, die an
subprocess.Popenübergeben werden, wobei Pfad-Objekte automatisch instrkonvertiert werden.timeout (float | None) – Der Zeitraum in Sekunden, nach dem ein Timeout auftritt und
Pytester.TimeoutExpiredausgelöst wird.stdin (_pytest.compat.NotSetType | bytes | IO[Any] | int) –
Optionaler Standardeingang.
Wenn es sich um
CLOSE_STDIN(Standard) handelt, ruft diese Methodesubprocess.Popenmitstdin=subprocess.PIPEauf und der Standardeingang wird sofort nach dem Start des neuen Befehls geschlossen.Wenn es vom Typ
bytesist, werden diese Bytes an den Standardeingang des Befehls gesendet.Andernfalls wird es an
subprocess.Popenübergeben. Für weitere Informationen in diesem Fall konsultieren Sie das Dokument desstdin-Parameters insubprocess.Popen.
- Gibt zurück:
Das Ergebnis.
- Rückgabetyp:
- runpytest_subprocess(*args, timeout=None)[source]¶
Führt pytest als Subprozess mit den angegebenen Argumenten aus.
Alle zu der Liste
pluginshinzugefügten Plugins werden über die Befehlszeilenoption-phinzugefügt. Zusätzlich wird--basetempverwendet, um temporäre Dateien und Verzeichnisse in einem nummerierten Verzeichnis mit dem Präfix „runpytest-“ abzulegen, um Konflikte mit der normalen nummerierten pytest-Speicherort für temporäre Dateien und Verzeichnisse zu vermeiden.
- final class RunResult[source]¶
Das Ergebnis der Ausführung eines Befehls von
Pytester.- outlines¶
Liste der Zeilen, die von stdout erfasst wurden.
- errlines¶
Liste der Zeilen, die von stderr erfasst wurden.
- stdout¶
LineMatcherder stdout-Ausgabe.Verwenden Sie z.B.
str(stdout), um stdout zu rekonstruieren, oder die gebräuchliche Methodestdout.fnmatch_lines().
- stderr¶
LineMatcherder stderr-Ausgabe.
- duration¶
Dauer in Sekunden.
- parseoutcomes()[Quelle]¶
Gibt ein Wörterbuch von Ergebnis-Nomen -> Anzahl zurück, das aus der Analyse der Terminalausgabe des Testprozesses erstellt wird.
Die zurückgegebenen Nomen sind immer im Plural
======= 1 failed, 1 passed, 1 warning, 1 error in 0.13s ====
Gibt
{"failed": 1, "passed": 1, "warnings": 1, "errors": 1}zurück.
- classmethod parse_summary_nouns(lines)[Quelle]¶
Extrahieren Sie die Nomen aus einer Pytest-Terminal-Zusammenfassungszeile.
Es wird immer das Plural-Nomen zur Konsistenz zurückgegeben
======= 1 failed, 1 passed, 1 warning, 1 error in 0.13s ====
Gibt
{"failed": 1, "passed": 1, "warnings": 1, "errors": 1}zurück.
- assert_outcomes(passed=0, skipped=0, failed=0, errors=0, xpassed=0, xfailed=0, warnings=None, deselected=None)[Quelle]¶
Stellt sicher, dass die angegebenen Ergebnisse mit den jeweiligen Zahlen (0 bedeutet, dass sie nicht aufgetreten sind) in der Textausgabe eines Testlaufs erscheinen.
warningsunddeselectedwerden nur geprüft, wenn sie nicht None sind.
- class LineMatcher[Quelle]¶
Flexible Textüberprüfung.
Dies ist eine Hilfsklasse zum Testen großer Texte wie der Ausgabe von Befehlen.
Der Konstruktor nimmt eine Liste von Zeilen ohne ihre abschließenden Zeilenumbrüche entgegen, d.h.
text.splitlines().- __str__()[Quelle]¶
Gibt den gesamten Originaltext zurück.
Hinzugefügt in Version 6.2: Sie können
str()in älteren Versionen verwenden.
- fnmatch_lines_random(lines2)[Quelle]¶
Prüft, ob Zeilen in der Ausgabe in beliebiger Reihenfolge vorhanden sind (unter Verwendung von
fnmatch.fnmatch()).
- re_match_lines_random(lines2)[Quelle]¶
Prüft, ob Zeilen in der Ausgabe in beliebiger Reihenfolge vorhanden sind (unter Verwendung von
re.match()).
- get_lines_after(fnline)[Quelle]¶
Gibt alle Zeilen zurück, die der gegebenen Zeile im Text folgen.
Die gegebene Zeile kann Glob-Wildcards enthalten.
- fnmatch_lines(lines2, *, consecutive=False)[Quelle]¶
Prüft, ob Zeilen in der Ausgabe vorhanden sind (unter Verwendung von
fnmatch.fnmatch()).Das Argument ist eine Liste von Zeilen, die übereinstimmen müssen und Glob-Wildcards verwenden können. Wenn sie nicht übereinstimmen, wird pytest.fail() aufgerufen. Die Übereinstimmungen und Nicht-Übereinstimmungen werden ebenfalls als Teil der Fehlermeldung angezeigt.
- re_match_lines(lines2, *, consecutive=False)[Quelle]¶
Prüft, ob Zeilen in der Ausgabe vorhanden sind (unter Verwendung von
re.match()).Das Argument ist eine Liste von Zeilen, die mit
re.matchübereinstimmen müssen. Wenn sie nicht übereinstimmen, wird pytest.fail() aufgerufen.Die Übereinstimmungen und Nicht-Übereinstimmungen werden ebenfalls als Teil der Fehlermeldung angezeigt.
- no_fnmatch_line(pat)[Quelle]¶
Stellen Sie sicher, dass erfasste Zeilen nicht mit dem angegebenen Muster übereinstimmen, unter Verwendung von
fnmatch.fnmatch.- Parameter:
pat (str) – Das Muster, mit dem Zeilen übereinstimmen sollen.
- final class HookRecorder[Quelle]¶
Zeichnet alle in einem Plugin-Manager aufgerufenen Hooks auf.
Hook-Recorder werden von
Pytestererstellt.Dies wickelt alle Hook-Aufrufe im Plugin-Manager ein, zeichnet jeden Aufruf auf, bevor die normalen Aufrufe weitergeleitet werden.
record_property¶
Tutorial: record_property
- record_property()[Quelle]¶
Fügt zusätzliche Eigenschaften zum aufrufenden Test hinzu.
Benutzereigenschaften werden Teil des Testreports und sind für konfigurierte Reporter, wie JUnit XML, verfügbar.
Die Fixture ist aufrufbar mit
name, value. Der Wert wird automatisch XML-kodiert.Beispiel
def test_function(record_property): record_property("example_key", 1)
record_testsuite_property¶
Tutorial: record_testsuite_property
- record_testsuite_property()[Quelle]¶
Zeichnet ein neues
<property>-Tag als Kind des Wurzel-<testsuite>-Elements auf.Dies eignet sich zum Schreiben globaler Informationen über die gesamte Testsuite und ist mit der
xunit2JUnit-Familie kompatibel.Dies ist eine Fixture mit Session-Scope, die mit
(name, value)aufgerufen wird. Beispieldef test_foo(record_testsuite_property): record_testsuite_property("ARCH", "PPC") record_testsuite_property("STORAGE_TYPE", "CEPH")
- Parameter:
name – Der Name der Eigenschaft.
value – Der Wert der Eigenschaft. Wird in eine Zeichenfolge konvertiert.
Warnung
Derzeit funktioniert diese Fixture **nicht** mit dem Plugin pytest-xdist. Siehe #7767 für Details.
recwarn¶
Tutorial: Warnungen aufzeichnen
- recwarn()[Quelle]¶
Gibt eine
WarningsRecorder-Instanz zurück, die alle von Testfunktionen ausgegebenen Warnungen aufzeichnet.Informationen zu Warnungskategorien finden Sie unter Wie man Warnungen abfängt.
- class WarningsRecorder[Quelle]¶
Ein Kontextmanager zur Aufzeichnung von ausgelösten Warnungen.
Jede aufgezeichnete Warnung ist eine Instanz von
warnings.WarningMessage.Angepasst von
warnings.catch_warnings.Hinweis
DeprecationWarningundPendingDeprecationWarningwerden unterschiedlich behandelt; siehe Sicherstellen, dass eine Funktion eine Deprecation-Warnung auslöst.
request¶
Beispiel: Unterschiedliche Werte an eine Testfunktion übergeben, abhängig von Kommandozeilenoptionen
Die request-Fixture ist eine spezielle Fixture, die Informationen über die anfragende Testfunktion bereitstellt.
- class FixtureRequest[Quelle]¶
Der Typ der
request-Fixture.Ein Request-Objekt bietet Zugriff auf den anfragenden Testkontext und hat ein
param-Attribut, falls die Fixture parametrisiert ist.- property scope: Literal['session', 'package', 'module', 'class', 'function']¶
Scope-Zeichenkette, eine von "function", "class", "module", "package", "session".
- abstractmethod node¶
Zugrundeliegender Sammlungsknoten (abhängig vom aktuellen Anfragescope).
- property function¶
Testfunktions-Objekt, wenn die Anfrage einen Scope pro Funktion hat.
- property cls¶
Klasse (kann None sein), in der die Testfunktion gesammelt wurde.
- property instance¶
Instanz (kann None sein), auf der die Testfunktion gesammelt wurde.
- property module¶
Python-Modulobjekt, in dem die Testfunktion gesammelt wurde.
- property keywords: MutableMapping[str, Any]¶
Schlüsselwörter/Marker-Wörterbuch für den zugrundeliegenden Knoten.
- abstractmethod addfinalizer(finalizer)[Quelle]¶
Fügt eine Finalizer-/Aufräumfunktion hinzu, die nach Ausführung des letzten Tests im anfragenden Testkontext ohne Argumente aufgerufen wird.
- applymarker(marker)[Quelle]¶
Wendet einen Marker auf eine einzelne Testfunktionsausführung an.
Diese Methode ist nützlich, wenn Sie keine Schlüsselwort/Marker für alle Funktionsaufrufe haben möchten.
- Parameter:
marker (str | MarkDecorator) – Ein Objekt, das durch einen Aufruf von
pytest.mark.NAME(...)erstellt wurde.
- raiseerror(msg)[Quelle]¶
Löst eine FixtureLookupError-Ausnahme aus.
- Parameter:
msg (str | None) – Eine optionale benutzerdefinierte Fehlermeldung.
- getfixturevalue(argname)[Quelle]¶
Dynamisches Ausführen einer benannten Fixture-Funktion.
Die Deklaration von Fixtures über Funktionsargumente wird nach Möglichkeit empfohlen. Wenn Sie jedoch erst zur Test-Setup-Zeit entscheiden können, ob eine andere Fixture verwendet werden soll, können Sie diese Funktion verwenden, um sie innerhalb einer Fixture- oder Testfunktions-Body abzurufen.
Diese Methode kann während der Test-Setup-Phase oder der Testlaufphase verwendet werden, aber während der Test-Teardown-Phase ist der Wert einer Fixture möglicherweise nicht verfügbar.
- Parameter:
argname (str) – Der Name der Fixture.
- Löst aus:
pytest.FixtureLookupError – Wenn die gegebene Fixture nicht gefunden werden konnte.
subtests¶
Die subtests-Fixture ermöglicht die Deklaration von Subtests innerhalb von Testfunktionen.
Tutorial: Wie man Subtests verwendet
- class Subtests[source]¶
Subtests fixture, ermöglicht die Deklaration von Subtests innerhalb von Testfunktionen über die
test()Methode.- test(msg=None, **kwargs)[source]¶
Context Manager für Subtests, der Ausnahmen abfängt, die innerhalb des Subtest-Scopes ausgelöst werden, und Assertionsfehler und Fehler einzeln meldet.
Verwendung¶
def test(subtests): for i in range(5): with subtests.test("custom message", i=i): assert i % 2 == 0
- param msg:
Wenn angegeben, wird die Nachricht im Testbericht im Falle eines Subtest-Fehlers angezeigt.
- param kwargs:
Beliebige Werte, die ebenfalls dem Subtest-Bericht hinzugefügt werden.
testdir¶
Identisch mit pytester, stellt aber eine Instanz bereit, deren Methoden Legacy-Objekte vom Typ py.path.local zurückgeben, wenn zutreffend.
Neuer Code sollte die Verwendung von testdir zugunsten von pytester vermeiden.
- final class Testdir[source]
Ähnlich wie
Pytester, aber diese Klasse arbeitet stattdessen mit Legacy-Objekten vom Typlegacy_path.Alle Methoden leiten einfach an eine interne
Pytester-Instanz weiter und konvertieren Ergebnisse bei Bedarf inlegacy_path-Objekte.- exception TimeoutExpired
- property tmpdir: LocalPath
Temporäres Verzeichnis, in dem Tests ausgeführt werden.
- make_hook_recorder(pluginmanager)[source]
Siehe
Pytester.make_hook_recorder().
- chdir()[source]
Siehe
Pytester.chdir().
- makefile(ext, *args, **kwargs)[source]
Siehe
Pytester.makefile().
- makeconftest(source)[source]
Siehe
Pytester.makeconftest().
- makeini(source)[source]
Siehe
Pytester.makeini().
- getinicfg(source)[source]
Siehe
Pytester.getinicfg().
- makepyprojecttoml(source)[source]
Siehe
Pytester.makepyprojecttoml().
- makepyfile(*args, **kwargs)[source]
Siehe
Pytester.makepyfile().
- maketxtfile(*args, **kwargs)[source]
Siehe
Pytester.maketxtfile().
- syspathinsert(path=None)[source]
Siehe
Pytester.syspathinsert().
- mkdir(name)[source]
Siehe
Pytester.mkdir().
- mkpydir(name)[source]
Siehe
Pytester.mkpydir().
- copy_example(name=None)[source]
Siehe
Pytester.copy_example().
- getnode(config, arg)[source]
Siehe
Pytester.getnode().
- getpathnode(path)[source]
Siehe
Pytester.getpathnode().
- genitems(colitems)[source]
Siehe
Pytester.genitems().
- runitem(source)[source]
Siehe
Pytester.runitem().
- inline_runsource(source, *cmdlineargs)[source]
Siehe
Pytester.inline_runsource().
- inline_genitems(*args)[source]
Siehe
Pytester.inline_genitems().
- inline_run(*args, plugins=(), no_reraise_ctrlc=False)[source]
Siehe
Pytester.inline_run().
- runpytest_inprocess(*args, **kwargs)[source]
Siehe
Pytester.runpytest_inprocess().
- runpytest(*args, **kwargs)[source]
Siehe
Pytester.runpytest().
- parseconfig(*args)[source]
Siehe
Pytester.parseconfig().
- parseconfigure(*args)[source]
Siehe
Pytester.parseconfigure().
- getitem(source, funcname='test_func')[source]
Siehe
Pytester.getitem().
- getitems(source)[source]
Siehe
Pytester.getitems().
- getmodulecol(source, configargs=(), withinit=False)[source]
Siehe
Pytester.getmodulecol().
- collect_by_name(modcol, name)[source]
Siehe
Pytester.collect_by_name().
- popen(cmdargs, stdout=-1, stderr=-1, stdin=NotSetType.token, **kw)[source]
Siehe
Pytester.popen().
- run(*cmdargs, timeout=None, stdin=NotSetType.token)[source]
Siehe
Pytester.run().
- runpython(script)[source]
Siehe
Pytester.runpython().
- runpython_c(command)[source]
Siehe
Pytester.runpython_c().
- runpytest_subprocess(*args, timeout=None)[source]
Siehe
Pytester.runpytest_subprocess().
- spawn_pytest(string, expect_timeout=10.0)[source]
Siehe
Pytester.spawn_pytest().
- spawn(cmd, expect_timeout=10.0)[source]
Siehe
Pytester.spawn().
tmp_path¶
Tutorial: Anleitung zur Verwendung von temporären Verzeichnissen und Dateien in Tests
- tmp_path()[source]¶
Gibt ein temporäres Verzeichnis (als
pathlib.Path-Objekt) zurück, das für jede Testfunktionsausführung eindeutig ist. Das temporäre Verzeichnis wird als Unterverzeichnis des Basis-Temporärverzeichnisses erstellt, mit konfigurierbarer Aufbewahrung, wie in Speicherort und Aufbewahrung temporärer Verzeichnisse besprochen.
tmp_path_factory¶
Tutorial: Die tmp_path_factory Fixture
tmp_path_factory ist eine Instanz von TempPathFactory
- final class TempPathFactory[source]¶
Factory für temporäre Verzeichnisse unter dem gemeinsamen Basis-Temporärverzeichnis, wie in Speicherort und Aufbewahrung temporärer Verzeichnisse besprochen.
- mktemp(basename, numbered=True)[source]¶
Erstellt ein neues temporäres Verzeichnis, das von der Factory verwaltet wird.
- Parameter:
basename (str) – Basisname des Verzeichnisses, muss ein relativer Pfad sein.
numbered (bool) – Wenn
True, wird sichergestellt, dass das Verzeichnis eindeutig ist, indem ein nummerierter Suffix größer als jeder vorhandene hinzugefügt wird:basename="foo-"undnumbered=Truebedeutet, dass diese Funktion Verzeichnisse namens"foo-0","foo-1","foo-2"und so weiter erstellt.
- Gibt zurück:
Der Pfad zum neuen Verzeichnis.
- Rückgabetyp:
tmpdir¶
Tutorial: Die tmpdir und tmpdir_factory Fixtures
- tmpdir()¶
Gibt ein temporäres Verzeichnis (als Objekt vom Typ legacy_path) zurück, das für jede Testfunktionsausführung eindeutig ist. Das temporäre Verzeichnis wird als Unterverzeichnis des Basis-Temporärverzeichnisses erstellt, mit konfigurierbarer Aufbewahrung, wie in Speicherort und Aufbewahrung temporärer Verzeichnisse besprochen.
Hinweis
Heutzutage wird die Verwendung von
tmp_pathbevorzugt.
tmpdir_factory¶
Tutorial: Die tmpdir und tmpdir_factory Fixtures
tmpdir_factory ist eine Instanz von TempdirFactory
- final class TempdirFactory[source]¶
Backward-Kompatibilitäts-Wrapper, der
py.path.localfürTempPathFactoryimplementiert.Hinweis
Heutzutage wird die Verwendung von
tmp_path_factorybevorzugt.- mktemp(basename, numbered=True)[source]¶
Identisch mit
TempPathFactory.mktemp(), gibt aber einpy.path.localObjekt zurück.
- getbasetemp()[source]¶
Identisch mit
TempPathFactory.getbasetemp(), gibt aber einpy.path.localObjekt zurück.
Hooks¶
Tutorial: Schreiben von Plugins
Referenz zu allen Hooks, die von conftest.py Dateien und Plugins implementiert werden können.
@pytest.hookimpl¶
- @pytest.hookimpl¶
Pytest's Dekorator zum Markieren von Funktionen als Hook-Implementierungen.
Siehe Schreiben von Hook-Funktionen und
pluggy.HookimplMarker().
@pytest.hookspec¶
- @pytest.hookspec¶
Pytest's Decorator zum Markieren von Funktionen als Hook-Spezifikationen.
Siehe Deklarieren neuer Hooks und
pluggy.HookspecMarker().
Bootstrapping-Hooks¶
Bootstrapping-Hooks, die für früh genug registrierte Plugins (interne und Drittanbieter-Plugins) aufgerufen werden.
- pytest_load_initial_conftests(early_config, parser, args)[Quelle]¶
Aufgerufen, um das Laden von initialen conftest-Dateien vor dem Parsen von Kommandozeilenoptionen zu implementieren.
- Parameter:
Verwendung in conftest-Plugins¶
Dieser Hook wird nicht für conftest-Dateien aufgerufen.
- pytest_cmdline_parse(pluginmanager, args)[Quelle]¶
Gibt ein initialisiertes
Configzurück, das die angegebenen Argumente parst.Stoppt beim ersten Nicht-None-Ergebnis, siehe firstresult: Stoppen beim ersten Nicht-None-Ergebnis.
Hinweis
Dieser Hook wird nur für Plugin-Klassen aufgerufen, die über das Argument
pluginsübergeben werden, wenn pytest.main zum Ausführen eines Tests im Prozess verwendet wird.- Parameter:
pluginmanager (PytestPluginManager) – Der Pytest-Plugin-Manager.
args (Liste[str]) – Liste der über die Kommandozeile übergebenen Argumente.
- Gibt zurück:
Ein Pytest-Konfigurationsobjekt.
- Rückgabetyp:
Config | None
Verwendung in conftest-Plugins¶
Dieser Hook wird nicht für conftest-Dateien aufgerufen.
- pytest_cmdline_main(config)[Quelle]¶
Aufgerufen, um die Hauptaktion der Kommandozeile durchzuführen.
Die Standardimplementierung ruft die Konfigurations-Hooks und
pytest_runtestloopauf.Stoppt beim ersten Nicht-None-Ergebnis, siehe firstresult: Stoppen beim ersten Nicht-None-Ergebnis.
- Parameter:
config (Config) – Das Pytest-Konfigurationsobjekt.
- Gibt zurück:
Der Exit-Code.
- Rückgabetyp:
Verwendung in conftest-Plugins¶
Dieser Hook wird nur für initiale conftests aufgerufen.
Initialisierungs-Hooks¶
Initialisierungs-Hooks, die für Plugins und conftest.py-Dateien aufgerufen werden.
- pytest_addoption(parser, pluginmanager)[Quelle]¶
Registriert argparse-ähnliche Optionen und Konfigurationswerte, wird einmal zu Beginn einer Testausführung aufgerufen.
- Parameter:
parser (Parser) – Zum Hinzufügen von Kommandozeilenoptionen, rufen Sie
parser.addoption(...)auf. Zum Hinzufügen von Konfigurationsdateiwerten rufen Sieparser.addini(...)auf.pluginmanager (PytestPluginManager) – Der Pytest-Plugin-Manager, der verwendet werden kann, um
hookspec()s oderhookimpl()s zu installieren und es einem Plugin zu ermöglichen, die Hooks eines anderen Plugins aufzurufen, um zu ändern, wie Kommandozeilenoptionen hinzugefügt werden.
Optionen können später über das
config-Objekt abgerufen werden, bzw.config.getoption(name), um den Wert einer Kommandozeilenoption abzurufen.config.getini(name), um einen aus einer Konfigurationsdatei gelesenen Wert abzurufen.
Das Konfigurationsobjekt wird über das Attribut
.configan viele interne Objekte übergeben oder kann als Fixturepytestconfigabgerufen werden.Hinweis
Dieser Hook ist inkompatibel mit Hook-Wrappern.
Verwendung in conftest-Plugins¶
Wenn ein conftest-Plugin diesen Hook implementiert, wird es sofort aufgerufen, wenn das conftest registriert wird.
Dieser Hook wird nur für initiale conftests aufgerufen.
- pytest_addhooks(pluginmanager)[Quelle]¶
Wird zur Plugin-Registrierungszeit aufgerufen, um das Hinzufügen neuer Hooks durch einen Aufruf von
pluginmanager.add_hookspecs(module_or_class, prefix)zu ermöglichen.- Parameter:
pluginmanager (PytestPluginManager) – Der Pytest-Plugin-Manager.
Hinweis
Dieser Hook ist inkompatibel mit Hook-Wrappern.
Verwendung in conftest-Plugins¶
Wenn ein conftest-Plugin diesen Hook implementiert, wird es sofort aufgerufen, wenn das conftest registriert wird.
- pytest_configure(config)[Quelle]¶
Ermöglicht Plugins und conftest-Dateien, die initiale Konfiguration durchzuführen.
Hinweis
Dieser Hook ist inkompatibel mit Hook-Wrappern.
- Parameter:
config (Config) – Das Pytest-Konfigurationsobjekt.
Verwendung in conftest-Plugins¶
Dieser Hook wird für jede initiale conftest-Datei aufgerufen, nachdem die Kommandozeilenoptionen geparst wurden. Danach wird der Hook für andere conftest-Dateien aufgerufen, wenn sie registriert werden.
- pytest_unconfigure(config)[Quelle]¶
Wird aufgerufen, bevor der Testprozess beendet wird.
- Parameter:
config (Config) – Das Pytest-Konfigurationsobjekt.
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren.
- pytest_sessionstart(session)[Quelle]¶
Wird aufgerufen, nachdem das
Session-Objekt erstellt wurde und bevor die Sammlung durchgeführt und die Testschleife gestartet wird.- Parameter:
session (Session) – Das Pytest-Sitzungsobjekt.
Verwendung in conftest-Plugins¶
Dieser Hook wird nur für initiale conftests aufgerufen.
- pytest_sessionfinish(session, exitstatus)[Quelle]¶
Wird aufgerufen, nachdem die gesamte Testausführung abgeschlossen ist, kurz bevor der Exit-Status an das System zurückgegeben wird.
- Parameter:
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren.
- pytest_plugin_registered(plugin, plugin_name, manager)[Quelle]¶
Ein neues Pytest-Plugin wurde registriert.
- Parameter:
plugin (_PluggyPlugin) – Das Plugin-Modul oder die Plugin-Instanz.
plugin_name (str) – Der Name, unter dem das Plugin registriert ist.
manager (PytestPluginManager) – Der Pytest-Plugin-Manager.
Hinweis
Dieser Hook ist inkompatibel mit Hook-Wrappern.
Verwendung in conftest-Plugins¶
Wenn ein conftest-Plugin diesen Hook implementiert, wird es sofort aufgerufen, wenn das conftest registriert wird, einmal für jedes bisher registrierte Plugin (einschließlich sich selbst!) und danach für alle Plugins, wenn sie registriert werden.
Sammlungs-Hooks¶
pytest ruft die folgenden Hooks zum Sammeln von Dateien und Verzeichnissen auf
- pytest_collection(session)[Quelle]¶
Führt die Sammelphase für die gegebene Sitzung durch.
Stoppt beim ersten Nicht-None-Ergebnis, siehe firstresult: Stoppen beim ersten Nicht-None-Ergebnis. Der Rückgabewert wird nicht verwendet, stoppt aber nur die weitere Verarbeitung.
Die Standard-Sammelphase ist diese (siehe einzelne Hooks für vollständige Details)
Ausgehend von
sessionals anfänglicher Sammler
pytest_collectstart(collector)report = pytest_make_collect_report(collector)pytest_exception_interact(collector, call, report), wenn eine interaktive Ausnahme auftratFür jeden gesammelten Knoten
Wenn ein Element,
pytest_itemcollected(item)Wenn ein Sammler, rekursiv aufrufen.
pytest_collectreport(report)
pytest_collection_modifyitems(session, config, items)
pytest_deselected(items)für alle abgewählten Elemente (kann mehrmals aufgerufen werden)
pytest_collection_finish(session)Setzt
session.itemsauf die Liste der gesammelten Elemente.Setzt
session.testscollectedauf die Anzahl der gesammelten Elemente.
Sie können diesen Hook implementieren, um nur eine Aktion vor der Sammlung durchzuführen, z. B. das Terminal-Plugin verwendet ihn, um mit der Anzeige des Sammlungszählers zu beginnen (und gibt
Nonezurück).- Parameter:
session (Session) – Das Pytest-Sitzungsobjekt.
Verwendung in conftest-Plugins¶
Dieser Hook wird nur für initiale conftests aufgerufen.
- pytest_ignore_collect(collection_path, path, config)[Quelle]¶
Gibt
Truezurück, um diesen Pfad für die Sammlung zu ignorieren.Gibt
Nonezurück, damit andere Plugins den Pfad für die Sammlung ignorieren.Die Rückgabe von
Falsewird diesen Pfad *nicht* für die Sammlung ignorieren, ohne anderen Plugins eine Chance zu geben, ihn zu ignorieren.Dieser Hook wird für alle Dateien und Verzeichnisse abgefragt, bevor spezifischere Hooks aufgerufen werden.
Stoppt beim ersten Nicht-None-Ergebnis, siehe firstresult: Stoppen beim ersten Nicht-None-Ergebnis.
- Parameter:
collection_path (pathlib.Path) – Der zu analysierende Pfad.
path (LEGACY_PATH) – Der zu analysierende Pfad (veraltet).
config (Config) – Das Pytest-Konfigurationsobjekt.
Geändert in Version 7.0.0: Der Parameter
collection_pathwurde alspathlib.Path-Entsprechung des Parameterspathhinzugefügt. Der Parameterpathwurde als veraltet markiert.Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für einen bestimmten Sammelpfad werden nur conftest-Dateien in übergeordneten Verzeichnissen des Sammelpfads abgefragt (wenn der Pfad ein Verzeichnis ist, wird die eigene conftest-Datei *nicht* abgefragt – ein Verzeichnis kann sich nicht selbst ignorieren!).
- pytest_collect_directory(path, parent)[Quelle]¶
Erstellt einen
Collectorfür das gegebene Verzeichnis oder None, falls nicht relevant.Hinzugefügt in Version 8.0.
Für beste Ergebnisse sollte der zurückgegebene Sammler eine Unterklasse von
Directorysein, dies ist jedoch nicht zwingend erforderlich.Der neue Knoten muss den angegebenen
parentals Elternteil haben.Stoppt beim ersten Nicht-None-Ergebnis, siehe firstresult: Stoppen beim ersten Nicht-None-Ergebnis.
- Parameter:
path (pathlib.Path) – Der zu analysierende Pfad.
Siehe Verwendung eines benutzerdefinierten Verzeichnissammlers für ein einfaches Anwendungsbeispiel dieses Hooks.
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für einen bestimmten Sammelpfad werden nur conftest-Dateien in übergeordneten Verzeichnissen des Sammelpfads abgefragt (wenn der Pfad ein Verzeichnis ist, wird die eigene conftest-Datei *nicht* abgefragt – ein Verzeichnis kann sich nicht selbst sammeln!).
- pytest_collect_file(file_path, path, parent)[Quelle]¶
Erstellt einen
Collectorfür den gegebenen Pfad oder None, falls nicht relevant.Für beste Ergebnisse sollte der zurückgegebene Sammler eine Unterklasse von
Filesein, dies ist jedoch nicht zwingend erforderlich.Der neue Knoten muss den angegebenen
parentals Elternteil haben.- Parameter:
file_path (pathlib.Path) – Der zu analysierende Pfad.
path (LEGACY_PATH) – Der zu sammelnde Pfad (veraltet).
Geändert in Version 7.0.0: Der Parameter
file_pathwurde alspathlib.Path-Entsprechung des Parameterspathhinzugefügt. Der Parameterpathwurde als veraltet markiert.Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für einen bestimmten Dateipfad werden nur conftest-Dateien in übergeordneten Verzeichnissen des Dateipfads abgefragt.
- pytest_pycollect_makemodule(module_path, path, parent)[Quelle]¶
Gibt einen
pytest.Module-Sammler oder None für den gegebenen Pfad zurück.Dieser Hook wird für jeden passenden Testmodulpfad aufgerufen. Der Hook
pytest_collect_filemuss verwendet werden, wenn Sie Testmodule für Dateien erstellen möchten, die nicht als Testmodul passen.Stoppt beim ersten Nicht-None-Ergebnis, siehe firstresult: Stoppen beim ersten Nicht-None-Ergebnis.
- Parameter:
module_path (pathlib.Path) – Der zu sammelnde Pfad des Moduls.
path (LEGACY_PATH) – Der zu sammelnde Pfad des Moduls (veraltet).
Geändert in Version 7.0.0: Der Parameter
module_pathwurde alspathlib.Path-Entsprechung des Parameterspathhinzugefügt.Der Parameter
pathwurde zugunsten vonfspathals veraltet markiert.Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für einen gegebenen übergeordneten Sammler werden nur conftest-Dateien im Verzeichnis des Sammlers und seinen übergeordneten Verzeichnissen abgefragt.
Um die Sammlung von Objekten in Python-Modulen zu beeinflussen, können Sie den folgenden Hook verwenden
- pytest_pycollect_makeitem(collector, name, obj)[Quelle]¶
Gibt ein benutzerdefiniertes Element/Sammler für ein Python-Objekt in einem Modul zurück oder None.
Stoppt beim ersten Nicht-None-Ergebnis, siehe firstresult: Stoppen beim ersten Nicht-None-Ergebnis.
- Parameter:
- Gibt zurück:
Die erstellten Elemente/Sammler.
- Rückgabetyp:
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für einen gegebenen Sammler werden nur conftest-Dateien im Verzeichnis des Sammlers und seinen übergeordneten Verzeichnissen abgefragt.
- pytest_generate_tests(metafunc)[Quelle]¶
Generiert (mehrere) parametrisierte Aufrufe einer Testfunktion.
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für eine gegebene Funktionsdefinition werden nur conftest-Dateien im Verzeichnis der Funktion und ihren übergeordneten Verzeichnissen abgefragt.
- pytest_make_parametrize_id(config, val, argname)[Quelle]¶
Gibt eine benutzerfreundliche String-Darstellung des gegebenen
valzurück, die von @pytest.mark.parametrize-Aufrufen verwendet wird, oder None, wenn der Hookvalnicht kennt.Der Parametername ist als
argnameverfügbar, falls erforderlich.Stoppt beim ersten Nicht-None-Ergebnis, siehe firstresult: Stoppen beim ersten Nicht-None-Ergebnis.
- Parameter:
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren.
Hooks zur Beeinflussung des Test-Skippings
- pytest_markeval_namespace(config)[Quelle]¶
Wird beim Erstellen des Globals-Dictionary aufgerufen, das zur Auswertung von String-Bedingungen in xfail/skipif-Markern verwendet wird.
Dies ist nützlich, wenn die Bedingung für einen Marker Objekte erfordert, deren Beschaffung während der Sammelzeit teuer oder unmöglich ist, was für normale boolesche Bedingungen erforderlich ist.
Hinzugefügt in Version 6.2.
- Parameter:
config (Config) – Das Pytest-Konfigurationsobjekt.
- Gibt zurück:
Ein Wörterbuch mit zusätzlichen globalen Variablen, die hinzugefügt werden sollen.
- Rückgabetyp:
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für jedes Element werden nur conftest-Dateien in den übergeordneten Verzeichnissen des Elements abgefragt.
Nachdem die Sammlung abgeschlossen ist, können Sie die Reihenfolge der Elemente ändern, die Testelemente löschen oder anderweitig ändern
- pytest_collection_modifyitems(session, config, items)[Quelle]¶
Wird aufgerufen, nachdem die Sammlung durchgeführt wurde. Kann die Elemente filtern oder ihre Reihenfolge ändern.
Wenn Elemente abgewählt werden (aus
itemsherausgefiltert), muss der Hookpytest_deselectedexplizit mit den abgewählten Elementen aufgerufen werden, um andere Plugins ordnungsgemäß zu benachrichtigen, z. B. mitconfig.hook.pytest_deselected(items=deselected_items).- Parameter:
Verwendung in conftest-Plugins¶
Jedes conftest-Plugin kann diesen Hook implementieren.
Hinweis
Wenn dieser Hook in conftest.py-Dateien implementiert ist, empfängt er immer alle gesammelten Items, nicht nur die unter dem conftest.py, in dem er implementiert ist.
Hooks für die Testausführung (runtest)¶
Alle runtest-bezogenen Hooks erhalten ein pytest.Item-Objekt.
- pytest_runtestloop(session)[Quelle]¶
Führt die Hauptschleife der Testausführung durch (nachdem die Sammlung abgeschlossen ist).
Die Standard-Hook-Implementierung führt das runtest-Protokoll für alle in der Sitzung gesammelten Items aus (
session.items), es sei denn, die Sammlung ist fehlgeschlagen oder die Pytest-Optioncollectonlyist gesetzt.Wenn zu irgendeinem Zeitpunkt
pytest.exit()aufgerufen wird, wird die Schleife sofort beendet.Wenn zu irgendeinem Zeitpunkt
session.shouldfailodersession.shouldstopgesetzt sind, wird die Schleife nach Abschluss des runtest-Protokolls für das aktuelle Item beendet.- Parameter:
session (Session) – Das Pytest-Sitzungsobjekt.
Stoppt beim ersten Nicht-None-Ergebnis, siehe firstresult: Stoppen beim ersten Nicht-None-Ergebnis. Der Rückgabewert wird nicht verwendet, stoppt aber nur die weitere Verarbeitung.
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren.
- pytest_runtest_protocol(item, nextitem)[Quelle]¶
Führt das runtest-Protokoll für ein einzelnes Test-Item aus.
Das Standard-Runtest-Protokoll ist wie folgt (siehe einzelne Hooks für vollständige Details)
pytest_runtest_logstart(nodeid, location)- Einrichtungsphase
call = pytest_runtest_setup(item)(eingewickelt inCallInfo(when="setup"))report = pytest_runtest_makereport(item, call)pytest_runtest_logreport(report)pytest_exception_interact(call, report)bei einer interaktiven Ausnahme
- Aufrufsphase, wenn die Einrichtung erfolgreich war und die Pytest-Option
setuponlynicht gesetzt ist call = pytest_runtest_call(item)(eingewickelt inCallInfo(when="call"))report = pytest_runtest_makereport(item, call)pytest_runtest_logreport(report)pytest_exception_interact(call, report)bei einer interaktiven Ausnahme
- Aufrufsphase, wenn die Einrichtung erfolgreich war und die Pytest-Option
- Aufräumphase
call = pytest_runtest_teardown(item, nextitem)(eingewickelt inCallInfo(when="teardown"))report = pytest_runtest_makereport(item, call)pytest_runtest_logreport(report)pytest_exception_interact(call, report)bei einer interaktiven Ausnahme
pytest_runtest_logfinish(nodeid, location)
- Parameter:
Stoppt beim ersten Nicht-None-Ergebnis, siehe firstresult: Stoppen beim ersten Nicht-None-Ergebnis. Der Rückgabewert wird nicht verwendet, stoppt aber nur die weitere Verarbeitung.
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren.
- pytest_runtest_logstart(nodeid, location)[Quelle]¶
Wird zu Beginn der Ausführung des Runtest-Protokolls für ein einzelnes Item aufgerufen.
Siehe
pytest_runtest_protocolfür eine Beschreibung des Runtest-Protokolls.- Parameter:
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für ein gegebenes Item werden nur conftest-Dateien im Verzeichnis des Items und seinen übergeordneten Verzeichnissen berücksichtigt.
- pytest_runtest_logfinish(nodeid, location)[Quelle]¶
Wird am Ende der Ausführung des Runtest-Protokolls für ein einzelnes Item aufgerufen.
Siehe
pytest_runtest_protocolfür eine Beschreibung des Runtest-Protokolls.- Parameter:
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für ein gegebenes Item werden nur conftest-Dateien im Verzeichnis des Items und seinen übergeordneten Verzeichnissen berücksichtigt.
- pytest_runtest_setup(item)[Quelle]¶
Wird aufgerufen, um die Einrichtungsphase für ein Test-Item durchzuführen.
Die Standardimplementierung führt
setup()aufitemund allen seinen Eltern (die noch nicht eingerichtet wurden) aus. Dies beinhaltet das Abrufen der Werte von Fixtures, die vom Item benötigt werden (die noch nicht abgerufen wurden).- Parameter:
item (Item) – Das Item.
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für ein gegebenes Item werden nur conftest-Dateien im Verzeichnis des Items und seinen übergeordneten Verzeichnissen berücksichtigt.
- pytest_runtest_call(item)[Quelle]¶
Wird aufgerufen, um den Test für ein Test-Item auszuführen (die Aufrufsphase).
Die Standardimplementierung ruft
item.runtest()auf.- Parameter:
item (Item) – Das Item.
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für ein gegebenes Item werden nur conftest-Dateien im Verzeichnis des Items und seinen übergeordneten Verzeichnissen berücksichtigt.
- pytest_runtest_teardown(item, nextitem)[Quelle]¶
Wird aufgerufen, um die Aufräumphase für ein Test-Item durchzuführen.
Die Standardimplementierung führt die Finalisierer aus und ruft
teardown()aufitemund allen seinen Eltern (die aufgeräumt werden müssen) auf. Dies beinhaltet die Ausführung der Aufräumphase von Fixtures, die vom Item benötigt werden (wenn sie außer Reichweite geraten).- Parameter:
item (Item) – Das Item.
nextitem (Item | None) – Das als Nächstes geplante Test-Item (None, wenn kein weiteres Test-Item geplant ist). Dieses Argument wird verwendet, um exakte Aufräumarbeiten durchzuführen, d.h. gerade genug Finalisierer aufzurufen, damit nextitem nur Setup-Funktionen aufrufen muss.
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für ein gegebenes Item werden nur conftest-Dateien im Verzeichnis des Items und seinen übergeordneten Verzeichnissen berücksichtigt.
- pytest_runtest_makereport(item, call)[Quelle]¶
Wird aufgerufen, um für jede der Setup-, Call- und Teardown-Runtest-Phasen eines Test-Items einen
TestReportzu erstellen.Siehe
pytest_runtest_protocolfür eine Beschreibung des Runtest-Protokolls.Stoppt beim ersten Nicht-None-Ergebnis, siehe firstresult: Stoppen beim ersten Nicht-None-Ergebnis.
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für ein gegebenes Item werden nur conftest-Dateien im Verzeichnis des Items und seinen übergeordneten Verzeichnissen berücksichtigt.
Für ein tieferes Verständnis können Sie die Standardimplementierung dieser Hooks in _pytest.runner und möglicherweise auch in _pytest.pdb betrachten, das mit _pytest.capture und dessen Ein-/Ausgabe-Erfassung interagiert, um bei einem Testfehler sofort in den interaktiven Debugging-Modus zu wechseln.
- pytest_pyfunc_call(pyfuncitem)[Quelle]¶
Ruft die zugrunde liegende Testfunktion auf.
Stoppt beim ersten Nicht-None-Ergebnis, siehe firstresult: Stoppen beim ersten Nicht-None-Ergebnis.
- Parameter:
pyfuncitem (Function) – Das Funktions-Item.
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für ein gegebenes Item werden nur conftest-Dateien im Verzeichnis des Items und seinen übergeordneten Verzeichnissen berücksichtigt.
Hooks für die Berichterstattung¶
Sitzungsbezogene Berichterstattungs-Hooks
- pytest_collectstart(collector)[Quelle]¶
Collector beginnt mit dem Sammeln.
- Parameter:
collector (Collector) – Der Collector.
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für einen gegebenen Sammler werden nur conftest-Dateien im Verzeichnis des Sammlers und seinen übergeordneten Verzeichnissen abgefragt.
- pytest_make_collect_report(collector)[Quelle]¶
Führt
collector.collect()aus und gibt einenCollectReportzurück.Stoppt beim ersten Nicht-None-Ergebnis, siehe firstresult: Stoppen beim ersten Nicht-None-Ergebnis.
- Parameter:
collector (Collector) – Der Collector.
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für einen gegebenen Sammler werden nur conftest-Dateien im Verzeichnis des Sammlers und seinen übergeordneten Verzeichnissen abgefragt.
- pytest_itemcollected(item)[Quelle]¶
Wir haben gerade ein Test-Item gesammelt.
- Parameter:
item (Item) – Das Item.
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für ein gegebenes Item werden nur conftest-Dateien im Verzeichnis des Items und seinen übergeordneten Verzeichnissen berücksichtigt.
- pytest_collectreport(report)[Quelle]¶
Collector hat die Sammlung abgeschlossen.
- Parameter:
report (CollectReport) – Der Sammelbericht.
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für einen gegebenen Sammler werden nur conftest-Dateien im Verzeichnis des Sammlers und seinen übergeordneten Verzeichnissen abgefragt.
- pytest_deselected(items)[Quelle]¶
Wird für abgewählte Test-Items aufgerufen, z.B. nach Schlüsselwort.
Beachten Sie, dass dieser Hook zwei Integrationsaspekte für Plugins hat
er kann *implementiert* werden, um über abgewählte Items benachrichtigt zu werden
er muss von Implementierungen von
pytest_collection_modifyitems*aufgerufen* werden, wenn Items abgewählt werden (um andere Plugins ordnungsgemäß zu benachrichtigen).
Kann mehrmals aufgerufen werden.
- Parameter:
items (Sequenz[Item]) – Die Items.
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren.
- pytest_report_header(config, start_path, startdir)[Quelle]¶
Gibt eine Zeichenkette oder eine Liste von Zeichenketten zurück, die als Kopfzeileninformationen für die Terminalberichterstattung angezeigt werden sollen.
- Parameter:
config (Config) – Das Pytest-Konfigurationsobjekt.
start_path (pathlib.Path) – Das Startverzeichnis.
startdir (LEGACY_PATH) – Das Startverzeichnis (veraltet).
Hinweis
Zeilen, die von einem Plugin zurückgegeben werden, werden vor denen von Plugins angezeigt, die davor ausgeführt wurden. Wenn Ihre Zeile(n) zuerst angezeigt werden sollen, verwenden Sie trylast=True.
Geändert in Version 7.0.0: Der Parameter
start_pathwurde alspathlib.Path-Äquivalent des Parametersstartdirhinzugefügt. Der Parameterstartdirwurde als veraltet markiert.Verwendung in conftest-Plugins¶
Dieser Hook wird nur für initiale conftests aufgerufen.
- pytest_report_collectionfinish(config, start_path, startdir, items)[Quelle]¶
Gibt eine Zeichenkette oder eine Liste von Zeichenketten zurück, die nach erfolgreichem Abschluss der Sammlung angezeigt werden sollen.
Diese Zeichenketten werden nach der Standardmeldung "collected X items" angezeigt.
Hinzugefügt in Version 3.2.
- Parameter:
config (Config) – Das Pytest-Konfigurationsobjekt.
start_path (pathlib.Path) – Das Startverzeichnis.
startdir (LEGACY_PATH) – Das Startverzeichnis (veraltet).
items (Sequenz[Item]) – Liste der Pytest-Items, die ausgeführt werden sollen; diese Liste sollte nicht geändert werden.
Hinweis
Zeilen, die von einem Plugin zurückgegeben werden, werden vor denen von Plugins angezeigt, die davor ausgeführt wurden. Wenn Ihre Zeile(n) zuerst angezeigt werden sollen, verwenden Sie trylast=True.
Geändert in Version 7.0.0: Der Parameter
start_pathwurde alspathlib.Path-Äquivalent des Parametersstartdirhinzugefügt. Der Parameterstartdirwurde als veraltet markiert.Verwendung in conftest-Plugins¶
Jedes conftest-Plugin kann diesen Hook implementieren.
- pytest_report_teststatus(report, config)[Quelle]¶
Gibt die Ergebnis-Kategorie, den Kurzbuchstaben und das ausführliche Wort für die Statusberichterstattung zurück.
Die Ergebnis-Kategorie ist eine Kategorie, in der das Ergebnis gezählt wird, z.B. "passed", "skipped", "error" oder die leere Zeichenkette.
Der Kurzbuchstabe wird während des Testfortschritts angezeigt, z.B. ".", "s", "E" oder die leere Zeichenkette.
Das ausführliche Wort wird während des Testfortschritts im ausführlichen Modus angezeigt, z.B. "PASSED", "SKIPPED", "ERROR" oder die leere Zeichenkette.
Pytest kann diese implizit entsprechend dem Testergebnis formatieren. Um eine explizite Formatierung bereitzustellen, geben Sie ein Tupel für das ausführliche Wort zurück, z.B.
"rerun", "R", ("RERUN", {"yellow": True}).- Parameter:
report (CollectReport | TestReport) – Das Berichtsobjekt, dessen Status zurückgegeben werden soll.
config (Config) – Das Pytest-Konfigurationsobjekt.
- Gibt zurück:
Der Teststatus.
- Rückgabetyp:
TestShortLogReport | Tupel[str, str, str | Tupel[str, Mapping[str, bool]]]
Stoppt beim ersten Nicht-None-Ergebnis, siehe firstresult: Stoppen beim ersten Nicht-None-Ergebnis.
Verwendung in conftest-Plugins¶
Jedes conftest-Plugin kann diesen Hook implementieren.
- pytest_report_to_serializable(config, report)[Quelle]¶
Serialisiert das gegebene Berichtsobjekt in eine Datenstruktur, die sich zum Senden über das Netzwerk eignet, z.B. konvertiert in JSON.
- Parameter:
config (Config) – Das Pytest-Konfigurationsobjekt.
report (CollectReport | TestReport) – Der Bericht.
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Die genauen Details können vom Plugin abhängen, das den Hook aufruft.
- pytest_report_from_serializable(config, data)[Quelle]¶
Stellt ein Berichtsobjekt wieder her, das zuvor mit
pytest_report_to_serializableserialisiert wurde.- Parameter:
config (Config) – Das Pytest-Konfigurationsobjekt.
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Die genauen Details können vom Plugin abhängen, das den Hook aufruft.
- pytest_terminal_summary(terminalreporter, exitstatus, config)[Quelle]¶
Fügt einen Abschnitt zur Terminal-Zusammenfassungsberichterstattung hinzu.
- Parameter:
terminalreporter (TerminalReporter) – Das interne Terminal-Reporter-Objekt.
exitstatus (ExitCode) – Der Exit-Status, der an das Betriebssystem zurückgemeldet wird.
config (Config) – Das Pytest-Konfigurationsobjekt.
Hinzugefügt in Version 4.2: Der Parameter
config.Verwendung in conftest-Plugins¶
Jedes conftest-Plugin kann diesen Hook implementieren.
- pytest_fixture_setup(fixturedef, request)[Quelle]¶
Führt die Ausführung der Fixture-Einrichtung durch.
- Parameter:
fixturedef (FixtureDef[Any]) – Das Fixture-Definitions-Objekt.
request (SubRequest) – Das Fixture-Anfrageobjekt.
- Gibt zurück:
Der Rückgabewert des Aufrufs der Fixture-Funktion.
- Rückgabetyp:
object | None
Stoppt beim ersten Nicht-None-Ergebnis, siehe firstresult: Stoppen beim ersten Nicht-None-Ergebnis.
Hinweis
Wenn die Fixture-Funktion None zurückgibt, werden andere Implementierungen dieser Hook-Funktion weiterhin aufgerufen, gemäß dem Verhalten der Option firstresult: Stoppen beim ersten Nicht-None-Ergebnis.
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für ein gegebenes Fixture werden nur conftest-Dateien im Verzeichnis des Fixture-Scopes und seinen übergeordneten Verzeichnissen berücksichtigt.
- pytest_fixture_post_finalizer(fixturedef, request)[Quelle]¶
Wird nach dem Aufräumen des Fixtures aufgerufen, aber bevor der Cache gelöscht wird, sodass das Fixture-Ergebnis
fixturedef.cached_resultnoch verfügbar ist (nichtNone).- Parameter:
fixturedef (FixtureDef[Any]) – Das Fixture-Definitions-Objekt.
request (SubRequest) – Das Fixture-Anfrageobjekt.
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für ein gegebenes Fixture werden nur conftest-Dateien im Verzeichnis des Fixture-Scopes und seinen übergeordneten Verzeichnissen berücksichtigt.
- pytest_warning_recorded(warning_message, when, nodeid, location)[Quelle]¶
Verarbeitet eine Warnung, die vom internen Pytest-Warnungs-Plugin erfasst wurde.
- Parameter:
warning_message (warnings.WarningMessage) – Die erfasste Warnung. Dies ist das gleiche Objekt, das von
warnings.catch_warningserzeugt wird und dieselben Attribute wie die Parameter vonwarnings.showwarning()enthält.when (Literal['config', 'collect', 'runtest']) –
Gibt an, wann die Warnung erfasst wurde. Mögliche Werte
"config": während der Konfigurations-/Initialisierungsphase von pytest."collect": während der Testsammlung."runtest": während der Testausführung.
nodeid (str) – Vollständige ID des Items. Leere Zeichenkette für Warnungen, die nicht zu einem bestimmten Knoten gehören.
location (Tupel[str, int, str] | None) – Wenn verfügbar, enthält Informationen über den Ausführungskontext der erfassten Warnung (Dateiname, Zeilennummer, Funktion).
functionwird zu <module> ausgewertet, wenn der Ausführungskontext auf Modulebene liegt.
Hinzugefügt in Version 6.0.
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Wenn die Warnung spezifisch für einen bestimmten Knoten ist, werden nur conftest-Dateien in den übergeordneten Verzeichnissen des Knotens berücksichtigt.
Zentraler Hook für die Berichterstattung über die Testausführung
- pytest_runtest_logreport(report)[Quelle]¶
Verarbeitet den
TestReport, der für jede der Setup-, Call- und Teardown-Runtest-Phasen eines Items erstellt wird.Siehe
pytest_runtest_protocolfür eine Beschreibung des Runtest-Protokolls.Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für ein gegebenes Item werden nur conftest-Dateien im Verzeichnis des Items und seinen übergeordneten Verzeichnissen berücksichtigt.
Hooks für Assertions¶
- pytest_assertrepr_compare(config, op, left, right)[Quelle]¶
Gibt eine Erklärung für Vergleiche in fehlgeschlagenen Assertions-Ausdrücken zurück.
Gibt None für keine benutzerdefinierte Erklärung zurück, andernfalls eine Liste von Zeichenketten. Die Zeichenketten werden mit Zeilenumbrüchen verbunden, aber alle Zeilenumbrüche *innerhalb* einer Zeichenkette werden maskiert. Beachten Sie, dass alle Zeilen außer der ersten leicht eingerückt werden; die Absicht ist, dass die erste Zeile eine Zusammenfassung ist.
- Parameter:
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für ein gegebenes Item werden nur conftest-Dateien im Verzeichnis des Items und seinen übergeordneten Verzeichnissen berücksichtigt.
- pytest_assertion_pass(item, lineno, orig, expl)[Quelle]¶
Wird jedes Mal aufgerufen, wenn eine Assertion erfolgreich ist.
Hinzugefügt in Version 5.0.
Verwenden Sie diesen Hook, um nach einer erfolgreichen Assertion eine Verarbeitung durchzuführen. Die ursprünglichen Assertionsinformationen sind im String
origverfügbar, und die von Pytest introspektierten Assertionsinformationen sind im Stringexplverfügbar.Dieser Hook muss explizit über die Konfigurationsoption
enable_assertion_pass_hookaktiviert werden[pytest] enable_assertion_pass_hook = true
[pytest] enable_assertion_pass_hook = true
Sie müssen die
.pyc-Dateien in Ihrem Projektverzeichnis und den Interpreterbibliotheken **bereinigen**, wenn Sie diese Option aktivieren, da Assertions neu geschrieben werden müssen.- Parameter:
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für ein gegebenes Item werden nur conftest-Dateien im Verzeichnis des Items und seinen übergeordneten Verzeichnissen berücksichtigt.
Hooks für Debugging/Interaktion¶
Es gibt einige Hooks, die für spezielle Berichterstattungen oder die Interaktion mit Ausnahmen verwendet werden können
- pytest_internalerror(excrepr, excinfo)[Quelle]¶
Wird für interne Fehler aufgerufen.
Gibt True zurück, um die Fallback-Behandlung des direkten Druckens einer INTERNALERROR-Nachricht nach sys.stderr zu unterdrücken.
- Parameter:
excrepr (ExceptionRepr) – Das Ausnahme-Repräsentationsobjekt.
excinfo (ExceptionInfo[BaseException]) – Die Ausnahminformationen.
Verwendung in conftest-Plugins¶
Jedes conftest-Plugin kann diesen Hook implementieren.
- pytest_keyboard_interrupt(excinfo)[source]¶
Wird bei einem Tastaturunterbrechung aufgerufen.
- Parameter:
excinfo (ExceptionInfo[KeyboardInterrupt | Exit]) – Die Ausnahminformationen.
Verwendung in conftest-Plugins¶
Jedes conftest-Plugin kann diesen Hook implementieren.
- pytest_exception_interact(node, call, report)[source]¶
Wird aufgerufen, wenn eine Ausnahme ausgelöst wurde, die potenziell interaktiv behandelt werden kann.
Kann während der Sammlung aufgerufen werden (siehe
pytest_make_collect_report), in diesem Fall istreporteinCollectReport.Kann während des runtest eines Items aufgerufen werden (siehe
pytest_runtest_protocol), in diesem Fall istreporteinTestReport.Dieser Hook wird nicht aufgerufen, wenn die ausgelöste Ausnahme eine interne Ausnahme wie
skip.Exceptionist.- Parameter:
call (CallInfo[Any]) – Die Aufruf-Informationen. Enthält die Ausnahme.
report (CollectReport | TestReport) – Der Sammlungs- oder Testbericht.
Verwendung in conftest-Plugins¶
Jede conftest-Datei kann diesen Hook implementieren. Für einen gegebenen Knoten werden nur conftest-Dateien in übergeordneten Verzeichnissen des Knotens konsultiert.
- pytest_enter_pdb(config, pdb)[source]¶
Wird bei pdb.set_trace() aufgerufen.
Kann von Plugins verwendet werden, um spezielle Aktionen durchzuführen, kurz bevor der Python-Debugger in den interaktiven Modus wechselt.
Verwendung in conftest-Plugins¶
Jedes conftest-Plugin kann diesen Hook implementieren.
- pytest_leave_pdb(config, pdb)[source]¶
Wird beim Verlassen von pdb aufgerufen (z. B. mit continue nach pdb.set_trace()).
Kann von Plugins verwendet werden, um spezielle Aktionen durchzuführen, kurz nachdem der Python-Debugger den interaktiven Modus verlassen hat.
Verwendung in conftest-Plugins¶
Jedes conftest-Plugin kann diesen Hook implementieren.
Collection-Baumobjekte¶
Dies sind die Collector- und Item-Klassen (zusammenfassend als "Knoten" bezeichnet), die den Collection-Baum bilden.
Node¶
- class Node[source]¶
Bases:
ABCBasisklasse von
CollectorundItem, den Komponenten des Test-Collection-Baums.Collectorsind die internen Knoten des Baums undItemsind die Blattknoten.- fspath: LEGACY_PATH¶
Eine
LEGACY_PATHKopie despathAttributs. Gedacht für die Verwendung in Methoden, die noch nicht aufpathlib.Pathmigriert wurden, wie z. B.Item.reportinfo. Wird in einer zukünftigen Version veraltet sein, bevorzugen Sie stattdessen die Verwendung vonpath.
- parent¶
Der übergeordnete Collector-Knoten.
- path: pathlib.Path¶
Dateisystempfad, von dem dieser Knoten gesammelt wurde (kann None sein).
- keywords: MutableMapping[str, Any]¶
Schlüsselwörter/Markierungen, die aus allen Gültigkeitsbereichen gesammelt wurden.
- extra_keyword_matches: set[str]¶
Ermöglicht das Hinzufügen von zusätzlichen Schlüsselwörtern zum Abgleich.
- stash: Stash¶
Ein Ort, an dem Plugins Informationen auf dem Knoten für ihre eigene Verwendung speichern können.
- classmethod from_parent(parent, **kw)[source]¶
Öffentlicher Konstruktor für Nodes.
Diese Indirektion wurde eingeführt, um die fragile Logik aus den Konstruktoren der Knoten zu entfernen.
Unterklassen können
super().from_parent(...)verwenden, wenn sie die Konstruktion überschreiben.- Parameter:
parent (Node) – Der übergeordnete Knoten dieses Nodes.
- property ihook: HookRelay¶
Fpath-sensibler Hook-Proxy, der zum Aufrufen von pytest-Hooks verwendet wird.
- warn(warning)[source]¶
Gibt eine Warnung für diesen Knoten aus.
Warnungen werden nach der Testsitzung angezeigt, es sei denn, sie werden explizit unterdrückt.
- Parameter:
warning (Warning) – Die auszugebende Warnungsinstanz.
- Löst aus:
ValueError – Wenn die
warningInstanz keine Unterklasse von Warning ist.
Beispielanwendung
node.warn(PytestWarning("some message")) node.warn(UserWarning("some message"))
Geändert in Version 6.2: Jede Unterklasse von
Warningwird jetzt akzeptiert, anstatt nur Unterklassen vonPytestWarning.
- for ... in iter_parents()[source]¶
Iteriert über alle übergeordneten Collector, beginnend bei und einschließlich sich selbst bis zur Wurzel des Collection-Baums.
Hinzugefügt in Version 8.1.
- listchain()[source]¶
Gibt eine Liste aller übergeordneten Collector zurück, beginnend von der Wurzel des Collection-Baums bis einschließlich sich selbst.
- add_marker(marker, append=True)[source]¶
Fügt dynamisch ein Markierungsobjekt zum Knoten hinzu.
- Parameter:
marker (str | MarkDecorator) – Die Markierung.
append (bool) – Ob die Markierung angehängt oder vorangestellt werden soll.
- get_closest_marker(name: str) Mark | None[source]¶
- get_closest_marker(name: str, default: Mark) Mark
Gibt die erste Markierung zurück, die dem Namen entspricht, von der nächstgelegenen (z. B. Funktion) zur weiter entfernten Ebene (z. B. Modulebene).
- Parameter:
default – Rückgabewert, wenn keine Markierung gefunden wurde.
name – Name, nach dem gefiltert werden soll.
- listextrakeywords()[source]¶
Gibt eine Menge aller zusätzlichen Schlüsselwörter in self und allen übergeordneten Elementen zurück.
- addfinalizer(fin)[source]¶
Registriert eine Funktion, die ohne Argumente aufgerufen wird, wenn dieser Knoten finalisiert wird.
Diese Methode kann nur aufgerufen werden, wenn dieser Knoten in einer Setup-Kette aktiv ist, z. B. während self.setup().
- getparent(cls)[source]¶
Holt den nächstgelegenen übergeordneten Knoten (einschließlich self), der eine Instanz der gegebenen Klasse ist.
- Parameter:
cls (type[_NodeType]) – Die zu suchende Knotenklasse.
- Gibt zurück:
Der Knoten, falls gefunden.
- Rückgabetyp:
_NodeType | None
- repr_failure(excinfo, style=None)[source]¶
Gibt eine Darstellung eines Sammlungs- oder Testfehlers zurück.
Siehe auch
- Parameter:
excinfo (ExceptionInfo[BaseException]) – Ausnahminformationen für den Fehler.
Collector¶
- class Collector[source]¶
-
Basisklasse aller Collector.
Collector erstellen Kinder über
collect()und bauen somit iterativ den Collection-Baum auf.- exception CollectError[source]¶
Bases:
ExceptionEin Fehler während der Sammlung, enthält eine benutzerdefinierte Nachricht.
- repr_failure(excinfo)[source]¶
Gibt eine Darstellung eines Sammlungsfehlers zurück.
- Parameter:
excinfo (ExceptionInfo[BaseException]) – Ausnahminformationen für den Fehler.
- parent¶
Der übergeordnete Collector-Knoten.
- path: pathlib.Path¶
Dateisystempfad, von dem dieser Knoten gesammelt wurde (kann None sein).
Item¶
- class Item[source]¶
-
Basisklasse aller Testaufrufe-Items.
Beachten Sie, dass für eine einzelne Funktion mehrere Testaufruf-Items vorhanden sein können.
- user_properties: list[tuple[str, object]]¶
Eine Liste von Tupeln (Name, Wert), die benutzerdefinierte Eigenschaften für diesen Test enthält.
- parent¶
Der übergeordnete Collector-Knoten.
- path: pathlib.Path¶
Dateisystempfad, von dem dieser Knoten gesammelt wurde (kann None sein).
- abstractmethod runtest()[source]¶
Führt den Testfall für dieses Item aus.
Muss von Unterklassen implementiert werden.
Siehe auch
- add_report_section(when, key, content)[source]¶
Fügt einen neuen Berichtabschnitt hinzu, ähnlich wie intern für die Erfassung von stdout und stderr.
item.add_report_section("call", "stdout", "report section contents")
- reportinfo()[source]¶
Holt Standortinformationen für dieses Item für Testberichte.
Gibt ein Tupel mit drei Elementen zurück
Der Pfad des Tests (Standard ist
self.path)Die 0-basierte Zeilennummer des Tests (Standard ist
None)Ein Name des Tests, der angezeigt werden soll (Standard ist
"")
Siehe auch
Datei¶
- Klasse File[Quelle]¶
Basen:
FSCollector,ABCBasisklasse für das Sammeln von Tests aus einer Datei.
Arbeiten mit Nicht-Python-Tests.
- parent¶
Der übergeordnete Collector-Knoten.
- path: pathlib.Path¶
Dateisystempfad, von dem dieser Knoten gesammelt wurde (kann None sein).
FSCollector¶
- Klasse FSCollector[Quelle]¶
-
Basisklasse für Dateisystem-Kollektoren.
- path: pathlib.Path¶
Dateisystempfad, von dem dieser Knoten gesammelt wurde (kann None sein).
- Klassenmethode from_parent(parent, *, fspath=None, path=None, **kw)[Quelle]¶
Der öffentliche Konstruktor.
- parent¶
Der übergeordnete Collector-Knoten.
Sitzung¶
- final Klasse Session[Quelle]¶
Basen:
CollectorDie Wurzel des Sammlungbaums.
Sessionsammelt die anfänglichen Pfade, die als Argumente an pytest übergeben werden.- Ausnahme Interrupted¶
Basen:
KeyboardInterruptSignalisiert, dass der Testlauf unterbrochen wurde.
- Eigenschaft startpath: Path¶
Der Pfad, von dem aus pytest aufgerufen wurde.
Hinzugefügt in Version 7.0.0.
- isinitpath(path, *, with_parents=False)[Quelle]¶
Ist Pfad ein anfänglicher Pfad?
Ein anfänglicher Pfad ist ein Pfad, der explizit an pytest auf der Kommandozeile übergeben wurde.
- Parameter:
with_parents (bool) – Wenn gesetzt, gib auch True zurück, wenn der Pfad ein Elternteil eines anfänglichen Pfads ist.
Geändert in Version 8.0: Der Parameter
with_parentswurde hinzugefügt.
- perform_collect(args: Sequence[str] | None = None, genitems: Literal[True] = True) Sequence[Item][Quelle]¶
- perform_collect(args: Sequence[str] | None = None, genitems: bool = True) Sequence[Item | Collector]
Führt die Sammelphase für diese Sitzung durch.
Dies wird von der Standardimplementierung des Hooks
pytest_collectionaufgerufen; siehe die Dokumentation dieses Hooks für weitere Details. Zu Testzwecken kann es auch direkt auf einer frischenSessionaufgerufen werden.Diese Funktion erweitert normalerweise rekursiv alle von der Sitzung gesammelten Kollektoren zu ihren Elementen, und es werden nur Elemente zurückgegeben. Zu Testzwecken kann dies unterdrückt werden, indem
genitems=Falseübergeben wird, in diesem Fall enthält der Rückgabewert diese Kollektoren unvergrößert, undsession.itemsist leer.
- parent¶
Der übergeordnete Collector-Knoten.
- path: pathlib.Path¶
Dateisystempfad, von dem dieser Knoten gesammelt wurde (kann None sein).
Paket¶
- Klasse Package[Quelle]¶
Basen:
DirectoryKollektor für Dateien und Verzeichnisse in einem Python-Paket – Verzeichnisse mit einer
__init__.py-Datei.Hinweis
Verzeichnisse ohne
__init__.py-Datei werden stattdessen standardmäßig vonDirgesammelt. Beide sindDirectory-Kollektoren.Geändert in Version 8.0: Erbt nun von
Directory.- parent¶
Der übergeordnete Collector-Knoten.
- path: pathlib.Path¶
Dateisystempfad, von dem dieser Knoten gesammelt wurde (kann None sein).
Modul¶
Klasse¶
- Klasse Class[Quelle]¶
Basen:
PyCollectorKollektor für Testmethoden (und verschachtelte Klassen) in einer Python-Klasse.
- parent¶
Der übergeordnete Collector-Knoten.
- path: pathlib.Path¶
Dateisystempfad, von dem dieser Knoten gesammelt wurde (kann None sein).
Funktion¶
- Klasse Function[Quelle]¶
Basen:
PyobjMixin,ItemElement, das für die Einrichtung und Ausführung einer Python-Testfunktion zuständig ist.
- Parameter:
name – Der vollständige Funktionsname, einschließlich aller Dekorationen, wie sie durch Parametrisierung hinzugefügt werden (
my_func[my_param]).parent – Das übergeordnete Node.
config – Das pytest Config-Objekt.
callspec – Wenn angegeben, wurde diese Funktion parametrisiert und callspec enthält Metainformationen über die Parametrisierung.
callobj – Wenn angegeben, das Objekt, das aufgerufen wird, wenn die Funktion aufgerufen wird. Andernfalls wird callobj von
parentunter Verwendung vonoriginalnameabgerufen.keywords – Schlüsselwörter, die an das Funktions-Objekt für die „-k“-Übereinstimmung gebunden sind.
session – Das pytest Session-Objekt.
fixtureinfo – Fixture-Informationen, die bereits auf diesem Fixture-Knoten aufgelöst wurden.
originalname – Der Attributname, der zum Zugriff auf das zugrunde liegende Funktions-Objekt verwendet wird. Standardmäßig
name. Setzen Sie dies, wenn der Name vom ursprünglichen Namen abweicht, z. B. wenn er Dekorationen wie die von der Parametrisierung hinzugefügten enthält (my_func[my_param]).
- originalname¶
Ursprünglicher Funktionsname, ohne Dekorationen (z. B. fügt die Parametrisierung ein
"[...]"-Suffix zu Funktionsnamen hinzu), der zum Zugriff auf das zugrunde liegende Funktions-Objekt vonparentverwendet wird (fallscallobjnicht explizit angegeben ist).Hinzugefügt in Version 3.0.
- Eigenschaft function¶
Zugrunde liegendes Python-„Funktions“-Objekt.
- Eigenschaft instance¶
Python-Instanzobjekt, an das die Funktion gebunden ist.
Gibt None zurück, wenn es sich nicht um eine Testmethode handelt, z. B. für eine eigenständige Testfunktion, eine Klasse oder ein Modul.
- repr_failure(excinfo)[Quelle]¶
Gibt eine Darstellung eines Sammlungs- oder Testfehlers zurück.
Siehe auch
- Parameter:
excinfo (ExceptionInfo[BaseException]) – Ausnahminformationen für den Fehler.
- parent¶
Der übergeordnete Collector-Knoten.
- path: pathlib.Path¶
Dateisystempfad, von dem dieser Knoten gesammelt wurde (kann None sein).
Funktionsdefinition¶
- Klasse FunctionDefinition[Quelle]¶
Basisklassen:
FunctionDiese Klasse ist eine provisorische Lösung, bis wir zu tatsächlichen Funktionsdefinitionsknoten übergehen und
metafuncloswerden.- parent¶
Der übergeordnete Collector-Knoten.
- path: pathlib.Path¶
Dateisystempfad, von dem dieser Knoten gesammelt wurde (kann None sein).
- setup()¶
Führt die zugrunde liegende Testfunktion aus.
Objekte¶
Zugreifbare Objekte aus Fixtures oder Hooks oder importierbar von pytest.
CallInfo¶
- final class CallInfo[Quelle]¶
Ergebnis-/Ausnahmeinformationen eines Funktionsaufrufs.
- excinfo: ExceptionInfo[BaseException] | None¶
Die abgefangene Ausnahme des Aufrufs, falls eine aufgetreten ist.
- when: Literal['collect', 'setup', 'call', 'teardown']¶
Der Kontext des Aufrufs: „collect“, „setup“, „call“ oder „teardown“.
- property result: TResult¶
Der Rückgabewert des Aufrufs, falls er nicht fehlschlug.
Kann nur zugegriffen werden, wenn excinfo None ist.
- classmethod from_call(func, when, reraise=None)[Quelle]¶
Ruft func auf und verpackt das Ergebnis in ein CallInfo.
- Parameter:
func (Callable[[], _pytest.runner.TResult]) – Die aufzurufende Funktion. Wird ohne Argumente aufgerufen.
when (Literal['collect', 'setup', 'call', 'teardown']) – Die Phase, in der die Funktion aufgerufen wird.
reraise (type[BaseException] | tuple[type[BaseException], ...] | None) – Ausnahme oder Ausnahmen, die bei Auslösung durch die Funktion propagiert werden sollen, anstatt in CallInfo verpackt zu werden.
CollectReport¶
- final class CollectReport[Quelle]¶
Basisklassen:
BaseReportSammlungsberichtsobjekt.
Berichte können beliebige zusätzliche Attribute enthalten.
- outcome: Literal['passed', 'failed', 'skipped']¶
Test-Ergebnis, immer einer von „passed“, „failed“, „skipped“.
- longrepr: None | ExceptionInfo[BaseException] | tuple[str, int, str] | str | TerminalRepr¶
None oder eine Fehlerdarstellung.
- result¶
Die gesammelten Elemente und Sammlungsknoten.
- sections: list[tuple[str, str]]¶
Tupel aus Zeichenketten
(Überschrift, Inhalt)mit zusätzlichen Informationen für den Testbericht. Wird von pytest verwendet, um Text ausstdout,stderrund abgefangenen Protokollereignissen hinzuzufügen. Kann von anderen Plugins verwendet werden, um beliebige Informationen zu Berichten hinzuzufügen.
- property caplog: str¶
Gibt aufgezeichnete Protokollzeilen zurück, wenn die Protokollaufzeichnung aktiviert ist.
Hinzugefügt in Version 3.5.
- property capstderr: str¶
Gibt aufgezeichneten Text von stderr zurück, wenn die Aufzeichnung aktiviert ist.
Hinzugefügt in Version 3.0.
- property capstdout: str¶
Gibt aufgezeichneten Text von stdout zurück, wenn die Aufzeichnung aktiviert ist.
Hinzugefügt in Version 3.0.
- property count_towards_summary: bool¶
Experimentell Ob dieser Bericht bei den am Ende der Test-Sitzung angezeigten Summen gezählt werden soll: „1 passed, 1 failure, etc.“.
Hinweis
Diese Funktion wird als experimentell betrachtet, daher beachten Sie, dass sie auch in Patch-Releases Änderungen unterliegen kann.
- property head_line: str | None¶
Experimentell Die Kopfzeile, die mit der longrepr-Ausgabe für diesen Bericht angezeigt wird, häufiger während der Traceback-Darstellung bei Fehlern.
________ Test.foo ________
Im obigen Beispiel ist die Kopfzeile „Test.foo“.
Hinweis
Diese Funktion wird als experimentell betrachtet, daher beachten Sie, dass sie auch in Patch-Releases Änderungen unterliegen kann.
Config¶
- final class Config[Quelle]¶
Zugriff auf Konfigurationswerte, Plugin-Manager und Plugin-Hooks.
- Parameter:
pluginmanager (PytestPluginManager) – Ein pytest PluginManager.
invocation_params (InvocationParams) – Objekt, das Parameter bezüglich des
pytest.main()-Aufrufs enthält.
- final class InvocationParams(*, args, plugins, dir)[Quelle]¶
Enthält Parameter, die während
pytest.main()übergeben wurden.Die Objektattribute sind schreibgeschützt.
Hinzugefügt in Version 5.1.
Hinweis
Beachten Sie, dass die Umgebungsvariable
PYTEST_ADDOPTSund die Konfigurationsoptionaddoptsvon pytest behandelt werden und nicht im Attributargsenthalten sind.Plugins, die auf
InvocationParamszugreifen, müssen sich dessen bewusst sein.- args: tuple[str, ...]¶
Die Kommandozeilenargumente, wie sie an
pytest.main()übergeben wurden.
- dir: Path¶
Das Verzeichnis, von dem
pytest.main()aufgerufen wurde.
- class ArgsSource(*values)[Quelle]¶
Gibt die Quelle der Testargumente an.
Hinzugefügt in Version 7.2.
- ARGS = 1¶
Kommandozeilenargumente.
- INVOCATION_DIR = 2¶
Aufrufverzeichnis.
- TESTPATHS = 3¶
Konfigurationswert ‚testpaths‘.
- option¶
Zugriff auf Kommandozeilenoptionen als Attribute.
- Typ:
- invocation_params¶
Die Parameter, mit denen pytest aufgerufen wurde.
- Typ:
- pluginmanager¶
Der Plugin-Manager verwaltet die Plugin-Registrierung und den Hook-Aufruf.
- Typ:
- stash¶
Ein Ort, an dem Plugins Informationen in der Konfiguration für ihre eigene Nutzung speichern können.
- Typ:
- property rootpath: Path¶
Der Pfad zum Root-Verzeichnis.
Hinzugefügt in Version 6.1.
- property inipath: Path | None¶
Der Pfad zur Konfigurationsdatei.
Hinzugefügt in Version 6.1.
- add_cleanup(func)[Quelle]¶
Fügt eine Funktion hinzu, die aufgerufen werden soll, wenn das Config-Objekt nicht mehr verwendet wird (normalerweise zeitgleich mit pytest_unconfigure).
- classmethod fromdictargs(option_dict, args)[Quelle]¶
Konstruktor, der für Subprozesse verwendbar ist.
- issue_config_time_warning(warning, stacklevel)[Quelle]¶
Gibt eine Warnung während der „configure“-Phase aus und behandelt sie.
Während
pytest_configurekönnen wir Warnungen nicht mit der Funktioncatch_warnings_for_itemabfangen, da es nicht möglich ist, Hook-Wrapper umpytest_configurezu haben.Diese Funktion ist hauptsächlich für Plugins gedacht, die Warnungen während
pytest_configure(oder ähnlichen Phasen) ausgeben müssen.
- addinivalue_line(name, line)[Quelle]¶
Fügt eine Zeile zu einer Konfigurationsoption hinzu. Die Option muss deklariert worden sein, ist aber möglicherweise noch nicht gesetzt, in welchem Fall die Zeile zur ersten Zeile ihres Wertes wird.
- getini(name)[Quelle]¶
Gibt den Konfigurationswert aus einer Konfigurationsdatei zurück.
Wenn ein Konfigurationswert nicht in einer Konfigurationsdatei definiert ist, wird der
default-Wert, der bei der Registrierung der Konfiguration durchparser.addinibereitgestellt wurde, zurückgegeben. Bitte beachten Sie, dass Sie sogarNoneals gültigen Standardwert angeben können.Wenn
defaultbei der Registrierung überparser.addininicht angegeben wird, wird ein Standardwert zurückgegeben, der auf dem anparser.addiniübergebenentype-Parameter basiert. Die Standardwerte basierend auftypesind:paths,pathlist,argsundlinelist: leere Liste[]bool:Falsestring: leere Zeichenkette""int:0float:0.0Wenn weder der Parameter
defaultnoch der Parametertypebei der Registrierung der Konfiguration überparser.addiniübergeben wird, wird die Konfiguration als Zeichenkette behandelt und eine leere Zeichenkette '' zurückgegeben.Wenn der angegebene Name nicht durch einen vorherigen
parser.addini-Aufruf (normalerweise von einem Plugin) registriert wurde, wird ein ValueError ausgelöst.
- getoption(name, default=<NOTSET>, skip=False)[quelle]¶
Gibt den Wert einer Kommandozeilenoption zurück.
- Parameter:
name (str) – Name der Option. Sie können auch den literalen
--OPT-Option anstelle des „dest“-Optionsnamens angeben.default (Any) – Fallback-Wert, wenn keine Option dieses Namens über
pytest_addoptiondeklariert wurde. Beachten Sie, dass dieser Parameter ignoriert wird, wenn die Option deklariert ist, auch wenn der Wert der OptionNoneist.skip (bool) – Wenn
True, löstpytest.skip()aus, wenn die Option nicht deklariert ist oder einenNone-Wert hat. Beachten Sie, dass selbst wennTrueangegeben ist, ein angegebener Standardwert anstelle eines Sprungs zurückgegeben wird.
- VERBOSITY_ASSERTIONS: Final = 'assertions'¶
Verbositäts-Typ für fehlgeschlagene Assertions (siehe
verbosity_assertions).
- VERBOSITY_TEST_CASES: Final = 'test_cases'¶
Verbositäts-Typ für die Ausführung von Testfällen (siehe
verbosity_test_cases).
- VERBOSITY_SUBTESTS: Final = 'subtests'¶
Verbositäts-Typ für fehlgeschlagene Subtests (siehe
verbosity_subtests).
- get_verbosity(verbosity_type=None)[quelle]¶
Ruft die Verbositätsstufe für einen feingranularen Verbositäts-Typ ab.
- Parameter:
verbosity_type (str | None) – Der Verbositäts-Typ, für den die Stufe abgerufen werden soll. Wenn für den angegebenen Typ eine Stufe konfiguriert ist, wird dieser Wert zurückgegeben. Wenn der angegebene Typ kein bekannter Verbositäts-Typ ist, wird die globale Verbositätsstufe zurückgegeben. Wenn der angegebene Typ None (Standard) ist, wird die globale Verbositätsstufe zurückgegeben.
Um eine Stufe für einen feingranularen Verbositäts-Typ zu konfigurieren, sollte die Konfigurationsdatei eine Einstellung für den Konfigurationsnamen und einen numerischen Wert für die Verbositätsstufe enthalten. Ein spezieller Wert „auto“ kann verwendet werden, um explizit die globale Verbositätsstufe zu verwenden.
Beispiel
[tool.pytest] verbosity_assertions = 2
[pytest] verbosity_assertions = 2
pytest -vprint(config.get_verbosity()) # 1 print(config.get_verbosity(Config.VERBOSITY_ASSERTIONS)) # 2
Verzeichnis¶
- final class Dir[quelle]¶
Sammler von Dateien in einem Dateisystemverzeichnis.
Hinzugefügt in Version 8.0.
Hinweis
Python-Verzeichnisse mit einer
__init__.py-Datei werden stattdessen standardmäßig vonPackagegesammelt. Beide sindDirectory-Sammler.- classmethod from_parent(parent, *, path)[quelle]¶
Der öffentliche Konstruktor.
- Parameter:
parent (nodes.Collector) – Der übergeordnete Sammler dieses Verzeichnisses.
path (pathlib.Path) – Der Pfad des Verzeichnisses.
- parent¶
Der übergeordnete Collector-Knoten.
- path: pathlib.Path¶
Dateisystempfad, von dem dieser Knoten gesammelt wurde (kann None sein).
Verzeichnis¶
- class Directory[quelle]¶
Basisklasse für das Sammeln von Dateien aus einem Verzeichnis.
Ein grundlegender Verzeichnissammler tut Folgendes: Er durchläuft die Dateien und Unterverzeichnisse im Verzeichnis und erstellt Sammler für sie, indem er die Hooks
pytest_collect_directoryundpytest_collect_fileaufruft, nachdem geprüft wurde, ob sie mitpytest_ignore_collectignoriert werden.Die Standard-Verzeichnissammler sind
DirundPackage.Hinzugefügt in Version 8.0.
Verwendung eines benutzerdefinierten Verzeichnissammlers.
- parent¶
Der übergeordnete Collector-Knoten.
- path: pathlib.Path¶
Dateisystempfad, von dem dieser Knoten gesammelt wurde (kann None sein).
ExceptionInfo¶
- final class ExceptionInfo[quelle]¶
Umschließt sys.exc_info()-Objekte und bietet Hilfe zur Navigation des Tracebacks.
- classmethod from_exception(exception, exprinfo=None)[quelle]¶
Gibt eine ExceptionInfo für eine vorhandene Ausnahme zurück.
Die Ausnahme muss ein
__traceback__-Attribut haben, das nichtNoneist, andernfalls schlägt diese Funktion mit einem Assertionsfehler fehl. Das bedeutet, dass die Ausnahme ausgelöst worden sein muss oder ein Traceback mit der Methodewith_traceback()hinzugefügt wurde.- Parameter:
exprinfo (str | None) – Eine Textzeichenkette, die hilft zu bestimmen, ob
AssertionErroraus der Ausgabe entfernt werden soll. Standardmäßig die Ausnahmemeldung/__str__().
Hinzugefügt in Version 7.4.
- classmethod from_exc_info(exc_info, exprinfo=None)[quelle]¶
Ähnlich wie
from_exception(), aber unter Verwendung eines alten exc_info-Tupels.
- classmethod from_current(exprinfo=None)[quelle]¶
Gibt eine ExceptionInfo zurück, die dem aktuellen Traceback entspricht.
Warnung
Experimentelle API
- Parameter:
exprinfo (str | None) – Eine Textzeichenkette, die hilft zu bestimmen, ob
AssertionErroraus der Ausgabe entfernt werden soll. Standardmäßig die Ausnahmemeldung/__str__().
- fill_unfilled(exc_info)[quelle]¶
Füllt eine ungefüllte ExceptionInfo, die mit
for_later()erstellt wurde.
- property value: E¶
Der Ausnahmewert.
- property tb: TracebackType¶
Der rohe Traceback der Ausnahme.
- property traceback: Traceback¶
Der Traceback.
- exconly(tryshort=False)[quelle]¶
Gibt die Ausnahme als Zeichenkette zurück.
Wenn „tryshort“ zu True ausgewertet wird und die Ausnahme eine AssertionError ist, wird nur der eigentliche Ausnahmeteil der Ausnahmedarstellung zurückgegeben (wodurch „AssertionError: “ vom Anfang entfernt wird).
- errisinstance(exc)[quelle]¶
Gibt True zurück, wenn die Ausnahme eine Instanz von exc ist.
Erwägen Sie stattdessen die Verwendung von
isinstance(excinfo.value, exc).
- getrepr(showlocals=False, style='long', abspath=False, tbfilter=True, funcargs=False, truncate_locals=True, truncate_args=True, chain=True)[quelle]¶
Gibt die str()-fähige Darstellung dieser Ausnahmeinformationen zurück.
- Parameter:
showlocals (bool) – Zeigt lokale Variablen pro Traceback-Eintrag an. Wird ignoriert, wenn
style=="native".style (str) – long|short|line|no|native|value Traceback-Stil.
abspath (bool) – Ob Pfade zu absoluten Pfaden geändert oder unverändert gelassen werden sollen.
tbfilter (bool | Callable[[ExceptionInfo[BaseException]], Traceback]) –
Ein Filter für Traceback-Einträge.
Wenn falsch, werden keine Einträge versteckt.
Wenn wahr, werden interne Einträge und Einträge versteckt, die eine lokale Variable
__tracebackhide__ = Trueenthalten.Wenn ein Callable, wird das Filtern an das Callable delegiert.
Wird ignoriert, wenn
style"native"ist.funcargs (bool) – Zeigt Fixtures („funcargs“ aus historischen Gründen) pro Traceback-Eintrag an.
truncate_locals (bool) – Wenn
showlocals==True, stellen Sie sicher, dass lokale Variablen sicher als Zeichenketten dargestellt werden können.truncate_args (bool) – Wenn
showargs==True, stellen Sie sicher, dass Argumente sicher als Zeichenketten dargestellt werden können.chain (bool) – Wenn verkettete Ausnahmen in Python 3 angezeigt werden sollen.
Geändert in Version 3.9: Parameter
chainhinzugefügt.
- match(regexp)[quelle]¶
Prüft, ob der reguläre Ausdruck
regexpmit der Zeichenkettenrepräsentation der Ausnahme übereinstimmt, indemre.search()verwendet wird.Wenn sie übereinstimmt, wird
Truezurückgegeben, andernfalls wird einAssertionErrorausgelöst.
- group_contains(expected_exception, *, match=None, depth=None)[quelle]¶
Prüft, ob eine erfasste Ausnahmegruppe eine passende Ausnahme enthält.
- Parameter:
expected_exception (Type[BaseException] | Tuple[Type[BaseException]]) – Der erwartete Ausnahmetyp oder ein Tupel, wenn eine von mehreren möglichen Ausnahmetypen erwartet wird.
match (str | re.Pattern[str] | None) –
Wenn angegeben, eine Zeichenkette, die einen regulären Ausdruck enthält, oder ein reguläres Ausdrucksobjekt, das gegen die Zeichenkettenrepräsentation der Ausnahme und ihre
__notes__mitre.search()getestet wird.Um einen literalen String abzugleichen, der Sonderzeichen enthalten kann, kann das Muster zuerst mit
re.escape()escaped werden.depth (Optional[int]) – Wenn
None, wird nach einer passenden Ausnahme in jeder Verschachtelungstiefe gesucht. Wenn >= 1, wird nur eine Ausnahme abgeglichen, wenn sie sich auf der angegebenen Tiefe befindet (Tiefe = 1 sind die Ausnahmen, die in der obersten Ausnahmegruppe enthalten sind).
Hinzugefügt in Version 8.0.
Warnung
Diese Hilfsfunktion erleichtert die Überprüfung auf das Vorhandensein spezifischer Ausnahmen, ist jedoch sehr schlecht geeignet, um zu prüfen, ob die Gruppe *keine anderen Ausnahmen* enthält. Sie sollten stattdessen
pytest.RaisesGroupin Betracht ziehen.
ExitCode¶
- class ExitCode(*values)¶
Kodiert die gültigen Exit-Codes von pytest.
Derzeit können Benutzer und Plugins auch andere Exit-Codes angeben.
Hinzugefügt in Version 5.0.
FixtureDef¶
- class FixtureDef[quelle]¶
Bases:
Generic[FixtureValue]Ein Container für eine Fixture-Definition.
Hinweis: Derzeit gelten nur explizit dokumentierte Felder und Methoden als öffentliche stabile API.
MarkDecorator¶
- class MarkDecorator[quelle]¶
Ein Dekorator zum Anwenden einer Markierung auf Testfunktionen und -klassen.
MarkDecoratorwerden mitpytest.markerstelltmark1 = pytest.mark.NAME # Simple MarkDecorator mark2 = pytest.mark.NAME(name1=value) # Parametrized MarkDecorator
und können dann als Decorators auf Testfunktionen angewendet werden.
@mark2 def test_function(): pass
Wenn ein
MarkDecoratoraufgerufen wird, tut er Folgendes:Wenn er mit einer einzelnen Klasse als einzigem positionalem Argument und ohne zusätzliche Keyword-Argumente aufgerufen wird, hängt er den Mark an die Klasse an, sodass er automatisch auf alle in dieser Klasse gefundenen Testfälle angewendet wird.
Wenn er mit einer einzelnen Funktion als einzigem positionalem Argument und ohne zusätzliche Keyword-Argumente aufgerufen wird, hängt er den Mark an die Funktion an, wobei alle Argumente, die bereits intern im
MarkDecoratorgespeichert sind, berücksichtigt werden.Wenn er in einem anderen Fall aufgerufen wird, gibt er eine neue
MarkDecorator-Instanz zurück, deren Inhalt mit den an diesen Aufruf übergebenen Argumenten aktualisiert wurde.
Hinweis: Die obigen Regeln verhindern, dass ein
MarkDecoratornur eine einzelne Funktions- oder Klassenreferenz als posisitionales Argument ohne zusätzliche Schlüsselwort- oder positionale Argumente speichert. Dies können Sie umgehen, indem Siewith_args()verwenden.
MarkGenerator¶
- final class MarkGenerator[source]¶
Factory für
MarkDecoratorObjekte - exponiert als Singleton-Instanzpytest.mark.Beispiel
import pytest @pytest.mark.slowtest def test_function(): pass
wendet einen 'slowtest'-
Markauftest_functionan.
Mark¶
Metafunc¶
- final class Metafunc[source]¶
Objekte, die an den
pytest_generate_testsHook übergeben werden.Sie helfen bei der Inspektion einer Testfunktion und der Generierung von Tests gemäß der Testkonfiguration oder den Werten, die in der Klasse oder dem Modul, in dem eine Testfunktion definiert ist, angegeben sind.
- definition¶
Zugriff auf die zugrunde liegende
_pytest.python.FunctionDefinition.
- config¶
Zugriff auf das
pytest.ConfigObjekt für die Test-Session.
- module¶
Das Modulobjekt, in dem die Testfunktion definiert ist.
- function¶
Zugrunde liegende Python-Testfunktion.
- fixturenames¶
Menge der von der Testfunktion benötigten Fixture-Namen.
- cls¶
Klassenobjekt, in dem die Testfunktion definiert ist, oder
None.
- parametrize(argnames, argvalues, indirect=False, ids=None, scope=None, *, _param_mark=None)[source]¶
Fügt neue Aufrufe zur zugrunde liegenden Testfunktion hinzu, indem die Liste von argvalues für die angegebenen argnames verwendet wird. Die Parametrisierung erfolgt während der Erfassungsphase. Wenn Sie teure Ressourcen einrichten müssen, informieren Sie sich über die Einstellung von
indirect, um dies stattdessen während der Testeinrichtung zu tun.Kann mehrmals pro Testfunktion aufgerufen werden (aber nur für verschiedene Argumentnamen), wobei jeder Aufruf alle vorherigen Parametrisierungen parametrisiert, z. B.
unparametrized: t parametrize ["x", "y"]: t[x], t[y] parametrize [1, 2]: t[x-1], t[x-2], t[y-1], t[y-2]
- Parameter:
argnames (str | Sequence[str]) – Eine kommagetrennte Zeichenkette, die ein oder mehrere Argumentnamen bezeichnet, oder eine Liste/ein Tupel von Argumentzeichenketten.
argvalues (Iterable[ParameterSet | Sequence[object] | object]) –
Die Liste der argvalues bestimmt, wie oft ein Test mit verschiedenen Argumentwerten aufgerufen wird.
Wenn nur ein argname angegeben wurde, ist argvalues eine Liste von Werten. Wenn N argnames angegeben wurden, muss argvalues eine Liste von N-Tupeln sein, wobei jedes Tupel-Element einen Wert für seinen jeweiligen argname angibt.
indirect (bool | Sequence[str]) – Eine Liste von Argumentnamen (Teilmenge von argnames) oder ein boolescher Wert. Wenn True, enthält die Liste alle Namen aus argnames. Jeder argvalue, der einem argname in dieser Liste entspricht, wird als request.param an seine jeweilige argname-Fixture-Funktion übergeben, damit diese während der Einrichtung eines Tests teurere Setups durchführen kann, anstatt zur Erfassungszeit.
ids (Iterable[object | None] | Callable[[Any], object | None] | None) –
Sequenz von (oder Generator für) IDs für
argvalues, oder ein Callable, das einen Teil der ID für jeden argvalue zurückgibt.Bei Sequenzen (und Generatoren wie
itertools.count()) sollten die zurückgegebenen IDs vom Typstring,int,float,booloderNonesein. Sie werden dem entsprechenden Index inargvalueszugeordnet.Nonebedeutet, die automatisch generierte ID zu verwenden.Hinzugefügt in Version 8.4: pytest.HIDDEN_PARAM bedeutet, den Parametersatz aus dem Testnamen zu verbergen. Kann höchstens 1 Mal verwendet werden, da Testnamen eindeutig sein müssen.
Wenn es sich um ein Callable handelt, wird es für jeden Eintrag in
argvaluesaufgerufen, und der Rückgabewert wird als Teil der automatisch generierten ID für die gesamte Menge verwendet (wobei Teile mit Bindestrichen ("-") verbunden werden). Dies ist nützlich, um spezifischere IDs für bestimmte Elemente bereitzustellen, z. B. Daten. Die Rückgabe vonNoneführt zu einer automatisch generierten ID.Wenn keine IDs angegeben werden, werden sie automatisch aus den argvalues generiert.
scope (Literal['session', 'package', 'module', 'class', 'function'] | None) – Wenn angegeben, bezeichnet es den Geltungsbereich der Parameter. Der Geltungsbereich wird zur Gruppierung von Tests nach Parameterinstanzen verwendet. Er überschreibt auch jeden Fixture-Funktions-definierten Geltungsbereich und ermöglicht so die Einstellung eines dynamischen Geltungsbereichs unter Verwendung des Testkontexts oder der Konfiguration.
Parser¶
- final class Parser[source]¶
Parser für Kommandozeilenargumente und Konfigurationsdateiwerte.
- Variablen:
extra_info – Ein Wörterbuch von generischen Parametern -> Wert, der angezeigt wird, wenn bei der Verarbeitung der Kommandozeilenargumente ein Fehler auftritt.
- getgroup(name, description='', after=None)[source]¶
Holt (oder erstellt) eine benannte Optionsgruppe.
- Parameter:
- Gibt zurück:
Die Optionsgruppe.
- Rückgabetyp:
Das zurückgegebene Gruppenobjekt hat eine
addoption-Methode mit derselben Signatur wieparser.addoption, wird aber in der jeweiligen Gruppe in der Ausgabe vonpytest --helpangezeigt.
- addoption(*opts, **attrs)[source]¶
Registriert eine Kommandozeilenoption.
- Parameter:
Nach dem Parsen der Kommandozeile sind die Optionen über
config.option.NAMEim pytest-Konfigurationsobjekt verfügbar, wobeiNAMEnormalerweise durch Übergabe einesdest-Attributs gesetzt wird, z. B.addoption("--long", dest="NAME", ...).
- parse_known_args(args, namespace=None)[source]¶
Die bekannten Argumente zu diesem Zeitpunkt parsen.
- Gibt zurück:
Ein argparse Namespace-Objekt.
- Rückgabetyp:
- parse_known_and_unknown_args(args, namespace=None)[source]¶
Die bekannten Argumente zu diesem Zeitpunkt parsen und auch die verbleibenden unbekannten Flag-Argumente zurückgeben.
- addini(name, help, type=None, default=<notset>, *, aliases=())[source]¶
Registriert eine Konfigurationsdateioption.
- Parameter:
name (str) – Name der Konfiguration.
type (Literal['string', 'paths', 'pathlist', 'args', 'linelist', 'bool', 'int', 'float'] | None) –
Typ der Konfiguration. Kann sein
string: eine Zeichenkettebool: ein boolescher Wertargs: eine Liste von Zeichenketten, wie in einer Shell getrenntlinelist: eine Liste von Zeichenketten, getrennt durch Zeilenumbrüchepaths: eine Liste vonpathlib.Path, getrennt wie in einer Shellpathlist: eine Liste vonpy.path, getrennt wie in einer Shellint: eine Ganzzahlfloat: eine Gleitkommazahl
Added in version 8.4: Die Typen
floatundint.Für die Typen
pathsundpathlistwerden sie relativ zur Konfigurationsdatei betrachtet. Wenn die Ausführung ohne definierte Konfigurationsdatei erfolgt, werden sie relativ zum aktuellen Arbeitsverzeichnis betrachtet (z. B. mit--override-ini).Added in version 7.0: Der Variablentyp
paths.Added in version 8.1: Verwendet das aktuelle Arbeitsverzeichnis, um
pathsundpathlistim Falle des Fehlens einer Konfigurationsdatei aufzulösen.Standardmäßig
string, wennNoneist oder nicht übergeben wird.default (Any) – Standardwert, wenn keine Konfigurationsdateioption vorhanden ist, aber abgefragt wird.
Zusätzliche Namen, unter denen diese Option referenziert werden kann. Aliase lösen sich zum kanonischen Namen auf.
Added in version 9.0: Der Parameter
aliases.
Der Wert von Konfigurationsschlüsseln kann über einen Aufruf von
config.getini(name)abgerufen werden.
OptionGroup¶
- class OptionGroup[source]¶
Eine Gruppe von Optionen, die in einem eigenen Abschnitt angezeigt wird.
- addoption(*opts, **attrs)[source]¶
Fügt dieser Gruppe eine Option hinzu.
Wenn eine gekürzte Version einer langen Option angegeben wird, wird sie in der Hilfe unterdrückt.
addoption('--twowords', '--two-words')führt dazu, dass die Hilfe nur--two-wordsanzeigt, aber--twowordsakzeptiert wird **und** das automatische Ziel inargs.twowordsliegt.
PytestPluginManager¶
- final class PytestPluginManager[source]¶
Bases:
PluginManagerEin
pluggy.PluginManagermit zusätzlichen pytest-spezifischen FunktionenLaden von Plugins von der Kommandozeile, der Umgebungsvariable
PYTEST_PLUGINSund globalen Variablenpytest_plugins, die in geladenen Plugins gefunden werden.conftest.pyLaden beim Start.
- register(plugin, name=None)[Quelle]¶
Registriert ein Plugin und gibt dessen Namen zurück.
- Parameter:
name (str | None) – Der Name, unter dem das Plugin registriert werden soll. Wenn nicht angegeben, wird ein Name mithilfe von
get_canonical_name()generiert.- Gibt zurück:
Der Plugin-Name. Wenn der Name für die Registrierung blockiert ist, wird
Nonezurückgegeben.- Rückgabetyp:
str | None
Wenn das Plugin bereits registriert ist, wird ein
ValueErrorausgelöst.
- import_plugin(modname, consider_entry_points=False)[Quelle]¶
Importiert ein Plugin mit
modname.Wenn
consider_entry_pointsTrue ist, werden auch Entry-Point-Namen berücksichtigt, um ein Plugin zu finden.
- add_hookcall_monitoring(before, after)¶
Fügt Vor-/Nach-Tracing-Funktionen für alle Hooks hinzu.
Gibt eine Undo-Funktion zurück, die, wenn sie aufgerufen wird, die hinzugefügten Tracer entfernt.
before(hook_name, hook_impls, kwargs)wird vor allen Hook-Aufrufen aufgerufen und erhält eine Hook-Aufrufer-Instanz, eine Liste von HookImpl-Instanzen und die Schlüsselwortargumente für den Hook-Aufruf.after(outcome, hook_name, hook_impls, kwargs)empfängt dieselben Argumente wiebefore, aber auch einResult-Objekt, das das Ergebnis des gesamten Hook-Aufrufs darstellt.
- add_hookspecs(module_or_class)¶
Fügt neue Hook-Spezifikationen hinzu, die im angegebenen
module_or_classdefiniert sind.Funktionen werden als Hook-Spezifikationen erkannt, wenn sie mit einem passenden
HookspecMarkerdekoriert wurden.
- check_pending()¶
Überprüft, ob alle Hooks, die nicht gegen eine Hook-Spezifikation verifiziert wurden, optional sind, andernfalls wird
PluginValidationErrorausgelöst.
- enable_tracing()¶
Aktiviert das Tracing von Hook-Aufrufen.
Gibt eine Undo-Funktion zurück, die, wenn sie aufgerufen wird, das hinzugefügte Tracing entfernt.
- get_canonical_name(plugin)¶
Gibt einen kanonischen Namen für ein Plugin-Objekt zurück.
Beachten Sie, dass ein Plugin unter einem anderen Namen registriert werden kann, der vom Aufrufer von
register(plugin, name)angegeben wird. Um den Namen eines registrierten Plugins zu erhalten, verwenden Sie stattdessenget_name(plugin).
- get_hookcallers(plugin)¶
Ruft alle Hook-Aufrufer für das angegebene Plugin ab.
- Gibt zurück:
Die Hook-Aufrufer oder
None, wennpluginin diesem Plugin-Manager nicht registriert ist.- Rückgabetyp:
list[HookCaller] | None
- get_name(plugin)¶
Gibt den Namen zurück, unter dem das Plugin registriert ist, oder
None, wenn nicht.
- get_plugin(name)¶
Gibt das unter dem angegebenen Namen registrierte Plugin zurück, falls vorhanden.
- get_plugins()¶
Gibt eine Menge aller registrierten Plugin-Objekte zurück.
- has_plugin(name)¶
Gibt zurück, ob ein Plugin mit dem angegebenen Namen registriert ist.
- is_blocked(name)¶
Gibt zurück, ob der angegebene Plugin-Name blockiert ist.
- is_registered(plugin)¶
Gibt zurück, ob das Plugin bereits registriert ist.
- list_name_plugin()¶
Gibt eine Liste von (name, plugin)-Paaren für alle registrierten Plugins zurück.
- list_plugin_distinfo()¶
Gibt eine Liste von (plugin, distinfo)-Paaren für alle von Setuptools registrierten Plugins zurück.
- load_setuptools_entrypoints(group, name=None)¶
Lädt Module aus der Abfrage der angegebenen Setuptools
group.
- set_blocked(name)¶
Blockiert die Registrierung des angegebenen Namens, de registriert ihn, falls er bereits registriert ist.
- subset_hook_caller(name, remove_plugins)¶
Gibt eine Proxy-
HookCaller-Instanz für die benannte Methode zurück, die Aufrufe an alle registrierten Plugins verwaltet, außer denen aus remove_plugins.
- unblock(name)¶
Hebt die Blockierung eines Namens auf.
Gibt zurück, ob der Name tatsächlich blockiert war.
- unregister(plugin=None, name=None)¶
De registriert ein Plugin und alle seine Hook-Implementierungen.
Das Plugin kann entweder über das Plugin-Objekt oder den Plugin-Namen angegeben werden. Wenn beides angegeben ist, müssen sie übereinstimmen.
Gibt das de registrierte Plugin zurück oder
None, wenn es nicht gefunden wurde.
- project_name: Final¶
Der Projektname.
- hook: Final¶
Das „Hook-Relais“, das zum Aufrufen eines Hooks bei allen registrierten Plugins verwendet wird. Siehe Aufrufen von Hooks.
- trace: Final[_tracing.TagTracerSub]¶
Der Tracing-Einstiegspunkt. Siehe Integriertes Tracing.
RaisesExc¶
- final class RaisesExc[Quelle]¶
Hinzugefügt in Version 8.4.
Dies ist die Klasse, die beim Aufruf von
pytest.raises()erstellt wird, kann aber direkt als Hilfsklasse mitRaisesGroupverwendet werden, wenn Sie Anforderungen an Unterausnahmen angeben möchten.Sie benötigen dies nicht, wenn Sie nur den Typ angeben möchten, da
RaisesGrouptype[BaseException]akzeptiert.- Parameter:
expected_exception (type[BaseException] | tuple[type[BaseException]] | None) –
Der erwartete Typ oder einer von mehreren möglichen Typen. Kann
Nonesein, um nurmatchund/odercheckzu verwenden.Der Typ wird mit
isinstance()überprüft und muss keine exakte Übereinstimmung sein. Wenn dies gewünscht ist, können Sie den Parametercheckverwenden.check (Callable[[BaseException], bool]) – Wenn angegeben, ein aufrufbares Objekt, das mit der Ausnahme als Parameter aufgerufen wird, nachdem der Typ und der Match-Regex (falls angegeben) überprüft wurden. Wenn es
Truezurückgibt, wird es als Übereinstimmung betrachtet, andernfalls als fehlgeschlagene Übereinstimmung.
RaisesExc.matches()kann auch eigenständig verwendet werden, um einzelne Ausnahmen zu überprüfen.Beispiele
with RaisesGroup(RaisesExc(ValueError, match="string")) ... with RaisesGroup(RaisesExc(check=lambda x: x.args == (3, "hello"))): ... with RaisesGroup(RaisesExc(check=lambda x: type(x) is ValueError)): ...
- fail_reason¶
Wird nach einem Aufruf von
matches()gesetzt, um einen menschenlesbaren Grund für das Fehlschlagen des Matches anzugeben. Bei Verwendung als Kontextmanager wird der String als Grund für das Fehlschlagen des Tests ausgegeben.
- matches(exception)[Quelle]¶
Prüft, ob eine Ausnahme den Anforderungen dieser
RaisesExcentspricht. Wenn dies fehlschlägt, wirdRaisesExc.fail_reasongesetzt.Beispiele
assert RaisesExc(ValueError).matches(my_exception): # is equivalent to assert isinstance(my_exception, ValueError) # this can be useful when checking e.g. the ``__cause__`` of an exception. with pytest.raises(ValueError) as excinfo: ... assert RaisesExc(SyntaxError, match="foo").matches(excinfo.value.__cause__) # above line is equivalent to assert isinstance(excinfo.value.__cause__, SyntaxError) assert re.search("foo", str(excinfo.value.__cause__)
RaisesGroup¶
Tutorial: Assertions über erwartete Ausnahmegruppen
- final class RaisesGroup[Quelle]¶
Hinzugefügt in Version 8.4.
Kontextmanager zur Überprüfung einer erwarteten
ExceptionGroup. Funktioniert ähnlich wiepytest.raises(), erlaubt aber die Angabe der Struktur einerExceptionGroup.ExceptionInfo.group_contains()versucht ebenfalls, Ausnahmegruppen zu handhaben, ist aber sehr schlecht darin, zu überprüfen, ob Sie *keine* unerwarteten Ausnahmen erhalten haben.Das Erfassungsverhalten unterscheidet sich von except*, da es standardmäßig viel strenger bezüglich der Struktur ist. Durch die Verwendung von
allow_unwrapped=Trueundflatten_subgroups=Truekönnen Sie except* vollständig abgleichen, wenn eine einzelne Ausnahme erwartet wird.- Parameter:
args –
Beliebige Anzahl von Ausnahmetypen,
RaisesGroupoderRaisesExc, um die in dieser Ausnahme enthaltenen Ausnahmen anzugeben. Alle angegebenen Ausnahmen müssen in der ausgelösten Gruppe vorhanden sein, *und keine anderen*.Wenn Sie eine variable Anzahl von Ausnahmen erwarten, müssen Sie
pytest.raises(ExceptionGroup)verwenden und die enthaltenen Ausnahmen manuell überprüfen. Erwägen Sie die Verwendung vonRaisesExc.matches().Die Reihenfolge der Ausnahmen spielt keine Rolle, daher ist
RaisesGroup(ValueError, TypeError)äquivalent zuRaisesGroup(TypeError, ValueError).match (str | re.Pattern[str] | None) –
Wenn angegeben, ein String, der einen regulären Ausdruck enthält, oder ein reguläres Ausdrucksobjekt, das gegen die String-Darstellung der Ausnahmegruppe und ihre PEP 678
__notes__mitre.search()getestet wird.Um einen literalen String abzugleichen, der Sonderzeichen enthalten kann, kann das Muster zuerst mit
re.escape()escaped werden.Beachten Sie, dass „ (5 subgroups)“ aus der
reprvor dem Abgleichen entfernt wird.check (Callable[[E], bool]) – Wenn angegeben, ein aufrufbares Objekt, das mit der Gruppe als Parameter aufgerufen wird, nachdem die erwarteten Ausnahmen erfolgreich abgeglichen wurden. Wenn es
Truezurückgibt, wird es als Übereinstimmung betrachtet, andernfalls als fehlgeschlagene Übereinstimmung.allow_unwrapped (bool) –
Wenn eine einzelne Ausnahme oder
RaisesExcerwartet wird, wird sie auch dann abgeglichen, wenn die Ausnahme nicht innerhalb einer Ausnahmegruppe liegt.Die Verwendung zusammen mit
match,checkoder dem Erwarten mehrerer Ausnahmen löst einen Fehler aus.flatten_subgroups (bool) – „glättet“ alle Gruppen innerhalb der ausgelösten Ausnahmegruppe und extrahiert alle Ausnahmen aus verschachtelten Gruppen, bevor abgeglichen wird. Ohne diese Option wird erwartet, dass Sie die Verschachtelungsstruktur vollständig angeben, indem Sie
RaisesGroupals erwarteten Parameter übergeben.
Beispiele
with RaisesGroup(ValueError): raise ExceptionGroup("", (ValueError(),)) # match with RaisesGroup( ValueError, ValueError, RaisesExc(TypeError, match="^expected int$"), match="^my group$", ): raise ExceptionGroup( "my group", [ ValueError(), TypeError("expected int"), ValueError(), ], ) # check with RaisesGroup( KeyboardInterrupt, match="^hello$", check=lambda x: isinstance(x.__cause__, ValueError), ): raise BaseExceptionGroup("hello", [KeyboardInterrupt()]) from ValueError # nested groups with RaisesGroup(RaisesGroup(ValueError)): raise ExceptionGroup("", (ExceptionGroup("", (ValueError(),)),)) # flatten_subgroups with RaisesGroup(ValueError, flatten_subgroups=True): raise ExceptionGroup("", (ExceptionGroup("", (ValueError(),)),)) # allow_unwrapped with RaisesGroup(ValueError, allow_unwrapped=True): raise ValueError
RaisesGroup.matches()kann auch direkt verwendet werden, um eine eigenständige Ausnahmegruppe zu überprüfen.Der Abgleichsalgorithmus ist gierig, was bedeutet, dass Fälle wie der folgende fehlschlagen können.
with RaisesGroup(ValueError, RaisesExc(ValueError, match="hello")): raise ExceptionGroup("", (ValueError("hello"), ValueError("goodbye")))
obwohl er im Allgemeinen die Reihenfolge der Ausnahmen in der Gruppe nicht berücksichtigt. Um das obige zu vermeiden, sollten Sie die erste
ValueErrormit einerRaisesExcangeben.Hinweis
Wenn die ausgelösten Ausnahmen nicht mit den erwarteten übereinstimmen, erhalten Sie eine detaillierte Fehlermeldung, die erklärt, warum. Dies schließt
repr(check)ein, falls gesetzt, was in Python übermäßig ausführlich sein kann und Speicherorte usw. anzeigt.Wenn die Bibliothek
hypothesisinstalliert und importiert ist (z. B. inconftest.py), wird diese Ausgabe von Hypothesis monkeypatched, um kürzere und besser lesbare Repräsentationen bereitzustellen.- fail_reason¶
Wird nach einem Aufruf von
matches()gesetzt, um einen menschenlesbaren Grund für das Fehlschlagen des Matches anzugeben. Bei Verwendung als Kontextmanager wird der String als Grund für das Fehlschlagen des Tests ausgegeben.
- matches(exception: BaseException | None) TypeGuard[ExceptionGroup[ExcT_1]][Quelle]¶
- matches(exception: BaseException | None) TypeGuard[BaseExceptionGroup[BaseExcT_1]]
Prüft, ob eine Ausnahme den Anforderungen dieser RaisesGroup entspricht. Wenn dies fehlschlägt, wird
RaisesGroup.fail_reasongesetzt.Beispiel
with pytest.raises(TypeError) as excinfo: ... assert RaisesGroup(ValueError).matches(excinfo.value.__cause__) # the above line is equivalent to myexc = excinfo.value.__cause assert isinstance(myexc, BaseExceptionGroup) assert len(myexc.exceptions) == 1 assert isinstance(myexc.exceptions[0], ValueError)
TerminalReporter¶
- final class TerminalReporter(config, file=None)[Quelle]¶
- wrap_write(content, *, flush=False, margin=8, line_sep='\n', **markup)[Quelle]¶
Wickelt Nachrichten mit Rand für Fortschrittsinformationen.
- rewrite(line, **markup)[Quelle]¶
Spult den Terminalcursor zum Anfang zurück und schreibt die angegebene Zeile.
- Parameter:
erase – Wenn True, werden auch Leerzeichen bis zur vollen Terminalbreite hinzugefügt, um sicherzustellen, dass vorherige Zeilen korrekt gelöscht werden.
Die restlichen Schlüsselwortargumente sind Markup-Anweisungen.
- build_summary_stats_line()[Quelle]¶
Erstellt die Teile, die in der letzten Zusammenfassungsstatistik-Zeile verwendet werden.
Die Zusammenfassungsstatistik-Zeile ist die Zeile, die am Ende angezeigt wird: „=== 12 passed, 2 errors in Xs===“.
Diese Funktion erstellt eine Liste der „Teile“, aus denen der Text in dieser Zeile besteht, im obigen Beispiel wäre es
[ ("12 passed", {"green": True}), ("2 errors", {"red": True} ]
Das letzte Wörterbuch für jede Zeile ist ein „Markup-Wörterbuch“, das von TerminalWriter zur Farbgebung der Ausgabe verwendet wird.
Die endgültige Farbe der Zeile wird ebenfalls von dieser Funktion bestimmt und ist das zweite Element des zurückgegebenen Tupels.
TestReport¶
- class TestReport[Quelle]¶
Basisklassen:
BaseReportGrundlegendes Testberichtsobjekt (wird auch für Setup- und Teardown-Aufrufe verwendet, wenn diese fehlschlagen).
Berichte können beliebige zusätzliche Attribute enthalten.
- location: tuple[str, int | None, str]¶
Ein Tupel (Dateipfad, Zeilennummer, Domaininfo), das den tatsächlichen Speicherort eines Testelements angibt – er kann sich vom gesammelten unterscheiden, z. B. wenn eine Methode von einem anderen Modul geerbt wird. Der Dateipfad kann relativ zu
config.rootdirsein. Die Zeilennummer ist 0-basiert.
- keywords: Mapping[str, Any]¶
Ein Dictionary aus Namen und Werten, das alle mit einer Testausführung verbundenen Schlüsselwörter und Marker enthält.
- outcome: Literal['passed', 'failed', 'skipped']¶
Test-Ergebnis, immer einer von „passed“, „failed“, „skipped“.
- longrepr: None | ExceptionInfo[BaseException] | tuple[str, int, str] | str | TerminalRepr¶
None oder eine Fehlerdarstellung.
- when: Literal['setup', 'call', 'teardown']¶
Einer von 'setup', 'call', 'teardown', um die Testphase anzugeben.
- user_properties¶
User properties ist eine Liste von Tupeln (Name, Wert), die benutzerdefinierte Eigenschaften des Tests enthält.
- sections: list[tuple[str, str]]¶
Tupel aus Zeichenketten
(Überschrift, Inhalt)mit zusätzlichen Informationen für den Testbericht. Wird von pytest verwendet, um Text ausstdout,stderrund abgefangenen Protokollereignissen hinzuzufügen. Kann von anderen Plugins verwendet werden, um beliebige Informationen zu Berichten hinzuzufügen.
- classmethod from_item_and_call(item, call)[source]¶
Erstellt und füllt einen TestReport mit Standard-Item- und Call-Informationen.
- property caplog: str¶
Gibt aufgezeichnete Protokollzeilen zurück, wenn die Protokollaufzeichnung aktiviert ist.
Hinzugefügt in Version 3.5.
- property capstderr: str¶
Gibt aufgezeichneten Text von stderr zurück, wenn die Aufzeichnung aktiviert ist.
Hinzugefügt in Version 3.0.
- property capstdout: str¶
Gibt aufgezeichneten Text von stdout zurück, wenn die Aufzeichnung aktiviert ist.
Hinzugefügt in Version 3.0.
- property count_towards_summary: bool¶
Experimentell Ob dieser Bericht bei den am Ende der Test-Sitzung angezeigten Summen gezählt werden soll: „1 passed, 1 failure, etc.“.
Hinweis
Diese Funktion wird als experimentell betrachtet, daher beachten Sie, dass sie auch in Patch-Releases Änderungen unterliegen kann.
- property head_line: str | None¶
Experimentell Die Kopfzeile, die mit der longrepr-Ausgabe für diesen Bericht angezeigt wird, häufiger während der Traceback-Darstellung bei Fehlern.
________ Test.foo ________
Im obigen Beispiel ist die Kopfzeile „Test.foo“.
Hinweis
Diese Funktion wird als experimentell betrachtet, daher beachten Sie, dass sie auch in Patch-Releases Änderungen unterliegen kann.
TestShortLogReport¶
- class TestShortLogReport[source]¶
Wird verwendet, um die Ergebniskategorie, den Kurzbuchstaben und das ausführliche Wort des Testergebnisses zu speichern. Zum Beispiel
"rerun", "R", ("RERUN", {"yellow": True}).- Variablen:
category – Die Ergebniskategorie, zum Beispiel
“passed”,“skipped”,“error”oder eine leere Zeichenkette.letter – Der Kurzbuchstabe, der während des Testfortschritts angezeigt wird, z.B.
".","s","E"oder eine leere Zeichenkette.word – Das ausführliche Wort, das während des Testfortschritts im ausführlichen Modus angezeigt wird, z.B.
"PASSED","SKIPPED","ERROR"oder eine leere Zeichenkette.
Ergebnis¶
Ergebnisobjekt, das innerhalb von Hook-Wrapper verwendet wird. Weitere Informationen finden Sie unter Result in the pluggy documentation.
Stash¶
- class Stash[source]¶
Stashist ein typsicheres, heterogenes, veränderliches Mapping, das es ermöglicht, Schlüssel und Werttypen separat von dort zu definieren, wo dieStasherstellt wird.Normalerweise erhalten Sie ein Objekt, das eine
Stashhat, z.B. einConfigoder einNode.stash: Stash = some_object.stash
Wenn ein Modul oder Plugin Daten in dieser
Stashspeichern möchte, erstellt esStashKeys für seine Schlüssel (auf Modulebene).# At the top-level of the module some_str_key = StashKey[str]() some_bool_key = StashKey[bool]()
Zum Speichern von Informationen
# Value type must match the key. stash[some_str_key] = "value" stash[some_bool_key] = True
Zum Abrufen der Informationen
# The static type of some_str is str. some_str = stash[some_str_key] # The static type of some_bool is bool. some_bool = stash[some_bool_key]
Hinzugefügt in Version 7.0.
- __getitem__(key)[source]¶
Ruft den Wert für den Schlüssel ab.
Löst
KeyErroraus, wenn der Schlüssel zuvor nicht gesetzt wurde.
- get(key, default)[source]¶
Ruft den Wert für den Schlüssel ab oder gibt
defaultzurück, wenn der Schlüssel zuvor nicht gesetzt wurde.
- setdefault(key, default)[source]¶
Gibt den Wert des Schlüssels zurück, wenn er bereits gesetzt ist, andernfalls setzt er den Wert des Schlüssels auf
defaultund gibtdefaultzurück.
Globale Variablen¶
pytest behandelt einige globale Variablen besonders, wenn sie in einem Testmodul oder conftest.py-Dateien definiert werden.
- collect_ignore¶
Tutorial: Anpassen der Testsammlung
Kann in conftest.py-Dateien deklariert werden, um Testverzeichnisse oder -module auszuschließen. Muss eine Liste von Pfaden sein (str, pathlib.Path oder jedes os.PathLike).
collect_ignore = ["setup.py"]
- collect_ignore_glob¶
Tutorial: Anpassen der Testsammlung
Kann in conftest.py-Dateien deklariert werden, um Testverzeichnisse oder -module mit Unix-Shell-ähnlichen Wildcards auszuschließen. Muss list[str] sein, wobei str Glob-Muster enthalten kann.
collect_ignore_glob = ["*_ignore.py"]
- pytest_plugins¶
Tutorial: Plugins in einem Testmodul oder conftest-Datei anfordern/laden
Kann auf der **globalen** Ebene in Testmodulen und conftest.py-Dateien deklariert werden, um zusätzliche Plugins zu registrieren. Kann entweder ein str oder eine Sequence[str] sein.
pytest_plugins = "myapp.testsupport.myplugin"
pytest_plugins = ("myapp.testsupport.tools", "myapp.testsupport.regression")
- pytestmark¶
Tutorial: Markieren ganzer Klassen oder Module
Kann auf der **globalen** Ebene in Testmodulen deklariert werden, um alle Testfunktionen und -methoden mit einem oder mehreren Markern zu versehen. Kann entweder ein einzelner Marker oder eine Liste von Markern sein (die von links nach rechts angewendet werden).
import pytest
pytestmark = pytest.mark.webtest
import pytest
pytestmark = [pytest.mark.integration, pytest.mark.slow]
Umgebungsvariablen¶
Umgebungsvariablen, die verwendet werden können, um das Verhalten von pytest zu ändern.
- CI¶
Wenn auf einen nicht leeren Wert gesetzt, erkennt pytest, dass es in einem CI-Prozess läuft. Siehe auch CI-Pipelines.
- BUILD_NUMBER¶
Wenn auf einen nicht leeren Wert gesetzt, erkennt pytest, dass es in einem CI-Prozess läuft. Alternative zu CI. Siehe auch CI-Pipelines.
- PYTEST_ADDOPTS¶
Enthält eine Befehlszeile (geparst vom py:mod:shlex-Modul), die der vom Benutzer angegebenen Befehlszeile **vorangestellt** wird. Weitere Informationen finden Sie unter Standard-Konfigurationsdateioptionen.
- PYTEST_VERSION¶
Diese Umgebungsvariable wird zu Beginn der pytest-Sitzung gesetzt und danach wieder gelöscht. Sie enthält den Wert von pytest.__version__ und kann unter anderem verwendet werden, um leicht zu überprüfen, ob ein Code innerhalb eines pytest-Laufs ausgeführt wird.
- PYTEST_CURRENT_TEST¶
Diese ist nicht für Benutzer gedacht, wird aber von pytest intern mit dem Namen des aktuellen Tests gesetzt, damit andere Prozesse sie inspizieren können. Weitere Informationen finden Sie unter Umgebungsvariable PYTEST_CURRENT_TEST.
- PYTEST_DEBUG¶
Wenn gesetzt, gibt pytest Trace- und Debug-Informationen aus.
- PYTEST_DEBUG_TEMPROOT¶
Root für temporäre Verzeichnisse, die von Fixtures wie tmp_path erzeugt werden, wie in Speicherort und Aufbewahrung temporärer Verzeichnisse diskutiert.
- PYTEST_DISABLE_PLUGIN_AUTOLOAD¶
Wenn gesetzt, deaktiviert das automatische Laden von Plugins über Entry Point-Paketierungsmetadaten. Nur Plugins, die explizit in PYTEST_PLUGINS angegeben oder mit -p aufgeführt sind, werden geladen. Siehe auch –disable-plugin-autoload.
- PYTEST_PLUGINS¶
Enthält eine durch Kommas getrennte Liste von Modulen, die als Plugins geladen werden sollen.
export PYTEST_PLUGINS=mymodule.plugin,xdist
Siehe auch -p.
- PYTEST_THEME¶
Setzt einen Pygments-Stil für die Codeausgabe.
- PYTEST_THEME_MODE¶
Setzt PYTEST_THEME auf entweder dark oder light.
- PY_COLORS¶
Wenn auf 1 gesetzt, verwendet pytest Farbe in der Terminalausgabe. Wenn auf 0 gesetzt, verwendet pytest keine Farbe. PY_COLORS hat Vorrang vor NO_COLOR und FORCE_COLOR.
- NO_COLOR¶
Wenn auf eine nicht leere Zeichenkette gesetzt (unabhängig vom Wert), verwendet pytest keine Farbe in der Terminalausgabe. PY_COLORS hat Vorrang vor NO_COLOR, was Vorrang vor FORCE_COLOR hat. Siehe no-color.org für andere Bibliotheken, die diesen Community-Standard unterstützen.
- FORCE_COLOR¶
Wenn auf eine nicht leere Zeichenkette gesetzt (unabhängig vom Wert), verwendet pytest Farbe in der Terminalausgabe. PY_COLORS und NO_COLOR haben Vorrang vor FORCE_COLOR.
Ausnahmen¶
- final exception FixtureLookupError[source]¶
Bases:
LookupErrorEin angeforderter Fixture konnte nicht zurückgegeben werden (fehlend oder ungültig).
Warnungen¶
Benutzerdefinierte Warnungen, die in bestimmten Situationen ausgegeben werden, z.B. bei unsachgemäßer Verwendung oder veralteten Funktionen.
- class PytestWarning¶
Bases:
UserWarningBasisklasse für alle von pytest ausgegebenen Warnungen.
- class PytestAssertRewriteWarning¶
Bases:
PytestWarningWarnung, die vom pytest assert rewrite-Modul ausgegeben wird.
- class PytestCacheWarning¶
Bases:
PytestWarningWarnung, die vom Cache-Plugin in verschiedenen Situationen ausgegeben wird.
- class PytestCollectionWarning¶
Bases:
PytestWarningWarnung, die ausgegeben wird, wenn pytest eine Datei oder ein Symbol in einem Modul nicht sammeln kann.
- class PytestConfigWarning¶
Bases:
PytestWarningWarnung, die für Konfigurationsprobleme ausgegeben wird.
- class PytestDeprecationWarning¶
Bases:
PytestWarning,DeprecationWarningWarnungsklasse für Funktionen, die in einer zukünftigen Version entfernt werden.
- class PytestExperimentalApiWarning¶
Bases:
PytestWarning,FutureWarningWarnungskategorie, die verwendet wird, um Experimente in pytest zu kennzeichnen.
Sparsam verwenden, da die API in einer zukünftigen Version geändert oder sogar vollständig entfernt werden kann.
- class PytestReturnNotNoneWarning¶
Bases:
PytestWarningWarnung, die ausgegeben wird, wenn eine Testfunktion einen anderen Wert als
Nonezurückgibt.Details finden Sie unter Rückgabe eines Werts ungleich None in Testfunktionen.
- class PytestRemovedIn9Warning¶
Bases:
PytestDeprecationWarningWarnungsklasse für Funktionen, die in pytest 9 entfernt werden.
- class PytestUnknownMarkWarning¶
Bases:
PytestWarningWarnung, die bei der Verwendung unbekannter Marker ausgegeben wird.
Details finden Sie unter So kennzeichnen Sie Testfunktionen mit Attributen.
- class PytestUnraisableExceptionWarning¶
Bases:
PytestWarningEine nicht aufhebbare Ausnahme wurde gemeldet.
Unraisable Ausnahmen sind Ausnahmen, die in
__del__Implementierungen und ähnlichen Situationen ausgelöst werden, wenn die Ausnahme nicht normal ausgelöst werden kann.
- Klasse PytestUnhandledThreadExceptionWarning¶
Bases:
PytestWarningEine unbehandelte Ausnahme ist in einem
Threadaufgetreten.Solche Ausnahmen breiten sich nicht normal aus.
Weitere Informationen finden Sie im Abschnitt Interne pytest-Warnungen der Dokumentation.
Konfigurationsoptionen¶
Hier ist eine Liste von integrierten Konfigurationsoptionen, die in einer pytest.ini (oder .pytest.ini), pyproject.toml, tox.ini oder setup.cfg Datei geschrieben werden können, die sich normalerweise am Stammverzeichnis Ihres Repositories befindet.
Einzelheiten zu jedem Dateiformat finden Sie unter Konfigurationsdateiformate.
Warnung
Die Verwendung von setup.cfg wird außer für sehr einfache Anwendungsfälle nicht empfohlen. .cfg Dateien verwenden einen anderen Parser als pytest.ini und tox.ini, was zu schwer zu findenden Problemen führen kann. Wenn möglich, wird empfohlen, letztere Dateien oder pytest.toml oder pyproject.toml für Ihre pytest-Konfiguration zu verwenden.
Konfigurationsoptionen können auf der Befehlszeile mit -o/--override-ini überschrieben werden, was auch mehrmals übergeben werden kann. Das erwartete Format ist name=wert. Zum Beispiel
pytest -o console_output_style=classic -o cache_dir=/tmp/mycache
- addopts¶
Fügt die angegebenen
OPTSzum Satz von Befehlszeilenargumenten hinzu, als ob sie vom Benutzer angegeben worden wären. Beispiel: Wenn Sie diesen Inhalt der Konfigurationsdatei haben# content of pytest.toml [pytest] addopts = ["--maxfail=2", "-rf"] # exit after 2 failures, report fail info
Die Ausgabe von
pytest test_hello.pybedeutet tatsächlichpytest --maxfail=2 -rf test_hello.py
Standardmäßig werden keine Optionen hinzugefügt.
- cache_dir¶
Legt das Verzeichnis fest, in dem der Inhalt des Cache-Plugins gespeichert wird. Das Standardverzeichnis ist
.pytest_cache, das im rootdir erstellt wird. Das Verzeichnis kann ein relativer oder absoluter Pfad sein. Bei Angabe eines relativen Pfads wird das Verzeichnis relativ zum rootdir erstellt. Zusätzlich kann ein Pfad Umgebungsvariablen enthalten, die erweitert werden. Weitere Informationen zum Cache-Plugin finden Sie unter Wie man fehlgeschlagene Tests erneut ausführt und den Zustand zwischen Testläufen beibehält.
- collect_imported_tests¶
Hinzugefügt in Version 8.4.
Wenn dies auf
falsegesetzt wird, sammelt pytest Klassen/Funktionen aus Testdateien **nur**, wenn sie in dieser Datei definiert sind (im Gegensatz zum Importieren dort).[pytest] collect_imported_tests = false
[pytest] collect_imported_tests = false
Standard:
truePytest sammelt traditionell Klassen/Funktionen im Namensraum des Testmoduls, auch wenn sie aus einer anderen Datei importiert wurden.
Zum Beispiel
# contents of src/domain.py class Testament: ... # contents of tests/test_testament.py from domain import Testament def test_testament(): ...
In diesem Szenario werden mit den Standardoptionen die Klasse
Testamentaustests/test_testament.pygesammelt, da sie mitTestbeginnt, obwohl es sich in diesem Fall um eine Produktionsklasse handelt, die in den Namensraum des Testmoduls importiert wird.Das Setzen von
collected_imported_testsauffalsein der Konfigurationsdatei verhindert dies.
- consider_namespace_packages¶
Steuert, ob pytest versuchen soll, Namespace-Pakete beim Sammeln von Python-Modulen zu identifizieren. Standard ist
False.Setzen Sie auf
True, wenn das zu testende Paket Teil eines Namespace-Pakets ist. Namespace-Pakete werden auch als--pyargsZiel unterstützt.Nur native Namespace-Pakete werden unterstützt, es gibt keine Pläne, Legacy-Namespace-Pakete zu unterstützen.
Hinzugefügt in Version 8.1.
- console_output_style¶
Legt den Stil der Konsolenausgabe während der Testausführung fest
classic: klassische pytest-Ausgabe.progress: wie klassische pytest-Ausgabe, aber mit Fortschrittsanzeige.progress-even-when-capture-no: ermöglicht die Verwendung der Fortschrittsanzeige auch beicapture=no.count: wie Fortschritt, zeigt aber den Fortschritt als Anzahl der abgeschlossenen Tests anstelle eines Prozentsatzes.times: zeigt die Dauer der Tests an.
Standard ist
progress, aber Sie können aufclassiczurückfallen, wenn Sie es bevorzugen oder der neue Modus unerwartete Probleme verursacht.[pytest] console_output_style = "classic"
[pytest] console_output_style = classic
- disable_test_id_escaping_and_forfeit_all_rights_to_community_support¶
Hinzugefügt in Version 4.4.
Pytest maskiert standardmäßig alle Nicht-ASCII-Zeichen, die in Unicode-Zeichenketten für die Parametrisierung verwendet werden, da dies mehrere Nachteile hat. Wenn Sie jedoch Unicode-Zeichenketten in der Parametrisierung verwenden und diese als solche (nicht maskiert) im Terminal sehen möchten, verwenden Sie diese Option in Ihrer Konfigurationsdatei.
[pytest] disable_test_id_escaping_and_forfeit_all_rights_to_community_support = true
[pytest] disable_test_id_escaping_and_forfeit_all_rights_to_community_support = true
Beachten Sie jedoch, dass dies unerwünschte Nebeneffekte und sogar Fehler verursachen kann, abhängig vom verwendeten Betriebssystem und den aktuell installierten Plugins. Verwenden Sie es daher auf eigene Gefahr.
Standard:
False.Siehe @pytest.mark.parametrize: Parametrisieren von Testfunktionen.
- doctest_encoding¶
Standardkodierung zum Dekodieren von Textdateien mit Docstrings. So verarbeitet pytest Doctests.
- doctest_optionflags¶
Ein oder mehrere Doctest-Flagnamen aus dem Standardmodul
doctest. So verarbeitet pytest Doctests.
- empty_parameter_set_mark¶
Ermöglicht die Auswahl der Aktion für leere Parametersätze in der Parametrisierung
skipüberspringt Tests mit einem leeren Parametersatz (Standard)xfailmarkiert Tests mit einem leeren Parametersatz als xfail (run=False)fail_at_collectlöst eine Ausnahme aus, wenn parametrize einen leeren Parametersatz sammelt
[pytest] empty_parameter_set_mark = "xfail"
[pytest] empty_parameter_set_mark = xfail
Hinweis
Der Standardwert dieser Option wird in zukünftigen Versionen voraussichtlich auf
xfailgeändert, da dies als weniger fehleranfällig gilt. Weitere Details finden Sie unter #3155.
- enable_assertion_pass_hook¶
Aktiviert den Hook
pytest_assertion_pass. Stellen Sie sicher, dass alle zuvor generierten.pycCache-Dateien gelöscht werden.[pytest] enable_assertion_pass_hook = true
[pytest] enable_assertion_pass_hook = true
- faulthandler_exit_on_timeout¶
Beendet den pytest-Prozess nach Erreichen des Timeout für einzelne Tests, indem
exit=Truean die Funktionfaulthandler.dump_traceback_later()übergeben wird. Dies ist besonders nützlich, um CI-Ressourcenverschwendung bei Testsuiten zu vermeiden, die den Haupt-Python-Interpreter in einen Deadlock-Zustand versetzen können.Diese Option ist standardmäßig auf „false“ gesetzt.
[pytest] faulthandler_timeout = 5 faulthandler_exit_on_timeout = true
[pytest] faulthandler_timeout = 5 faulthandler_exit_on_timeout = true
- faulthandler_timeout¶
Gibt die Tracebacks aller Threads aus, wenn ein Test länger als
XSekunden dauert (einschließlich Setup und Teardown von Fixtures). Implementiert mit der Funktionfaulthandler.dump_traceback_later(), sodass alle dortigen Vorbehalte gelten.[pytest] faulthandler_timeout = 5
[pytest] faulthandler_timeout = 5
Weitere Informationen finden Sie unter Fehlerbehandler. Weitere Informationen finden Sie unter Fehlerbehandler.
- filterwarnings¶
Legt eine Liste von Filtern und Aktionen fest, die für übereinstimmende Warnungen ausgeführt werden sollen. Standardmäßig werden alle während der Testsitzung ausgegebenen Warnungen am Ende der Testsitzung in einer Zusammenfassung angezeigt.
[pytest] filterwarnings = ["error", "ignore::DeprecationWarning"]
[pytest] filterwarnings = error ignore::DeprecationWarning
Dies weist pytest an, Deprecation-Warnungen zu ignorieren und alle anderen Warnungen in Fehler umzuwandeln. Weitere Informationen finden Sie unter Wie man Warnungen erfasst.
- junit_duration_report¶
Hinzugefügt in Version 4.1.
Konfiguriert, wie Dauern im JUnit XML-Bericht aufgezeichnet werden
total(Standard): Dauerzeiten, die gemeldet werden, umfassen Setup-, Aufruf- und Teardown-Zeiten.call: Dauerzeiten, die gemeldet werden, umfassen nur Aufrufzeiten, ohne Setup und Teardown.
[pytest] junit_duration_report = "call"
[pytest] junit_duration_report = call
- junit_family¶
Hinzugefügt in Version 4.2.
Geändert in Version 6.1: Standard auf
xunit2geändert.Konfiguriert das Format der generierten JUnit XML-Datei. Die möglichen Optionen sind
xunit1(oderlegacy): erzeugt Ausgabe im alten Stil, kompatibel mit dem xunit 1.0 Format.xunit2: erzeugt Ausgabe im xunit 2.0 Stil, die besser mit den neuesten Jenkins-Versionen kompatibel sein sollte. **Dies ist der Standard**.
[pytest] junit_family = "xunit2"
[pytest] junit_family = xunit2
- junit_log_passing_tests¶
Hinzugefügt in Version 4.6.
Wenn
junit_logging != "no", wird konfiguriert, ob die erfasste Ausgabe für **erfolgreiche** Tests in die JUnit XML-Datei geschrieben werden soll. Standard istTrue.[pytest] junit_log_passing_tests = false
[pytest] junit_log_passing_tests = False
- junit_logging¶
Hinzugefügt in Version 3.5.
Geändert in Version 5.4: Optionen
log,all,out-errhinzugefügt.Konfiguriert, ob die erfasste Ausgabe in die JUnit XML-Datei geschrieben werden soll. Gültige Werte sind
log: schreibt nur dieloggingerfassten Ausgaben.system-out: schreibt die erfasstenstdoutInhalte.system-err: schreibt die erfasstenstderrInhalte.out-err: schreibt sowohl die erfasstenstdoutals auchstderrInhalte.all: schreibt die erfasstenlogging,stdoutundstderrInhalte.no(Standard): keine erfasste Ausgabe wird geschrieben.
[pytest] junit_logging = "system-out"
[pytest] junit_logging = system-out
- junit_suite_name¶
Um den Namen des Root-Testsuite-XML-Elements festzulegen, können Sie die Option
junit_suite_namein Ihrer Konfigurationsdatei festlegen.[pytest] junit_suite_name = "my_suite"
[pytest] junit_suite_name = my_suite
- log_auto_indent¶
Ermöglicht selektive automatische Einrückung von mehrzeiligen Log-Nachrichten.
Unterstützt die Befehlszeilenoption
--log-auto-indent [wert]und die Konfigurationsoptionlog_auto_indent = [wert], um das automatische Einrückungsverhalten für die gesamte Protokollierung festzulegen.[wert]kann seinTrue oder „On“ - Dynamische automatische Einrückung von mehrzeiligen Log-Nachrichten
False oder „Off“ oder 0 - Keine automatische Einrückung von mehrzeiligen Log-Nachrichten (Standardverhalten)
[positive Ganzzahl] - Automatische Einrückung von mehrzeiligen Log-Nachrichten um [Wert] Leerzeichen
[pytest] log_auto_indent = false
[pytest] log_auto_indent = false
Unterstützt das Übergeben des Keywords
extra={"auto_indent": [wert]}an Aufrufe vonlogging.log(), um das automatische Einrückungsverhalten für jeden einzelnen Log-Eintrag zu spezifizieren. DasextraKeyword überschreibt den auf der Befehlszeile oder in der Konfiguration angegebenen Wert.
- log_cli¶
Aktiviert die Log-Anzeige während der Testausführung (auch bekannt als „Live-Protokollierung“). Der Standardwert ist
False.[pytest] log_cli = true
[pytest] log_cli = true
- log_cli_date_format¶
Legt eine mit
time.strftime()kompatible Zeichenkette fest, die zur Formatierung von Daten für die Live-Protokollierung verwendet wird.[pytest] log_cli_date_format = "%Y-%m-%d %H:%M:%S"
[pytest] log_cli_date_format = %Y-%m-%d %H:%M:%S
Weitere Informationen finden Sie unter Live-Logs.
- log_cli_format¶
Legt eine mit
loggingkompatible Zeichenkette fest, die zur Formatierung von Live-Log-Nachrichten verwendet wird.[pytest] log_cli_format = "%(asctime)s %(levelname)s %(message)s"
[pytest] log_cli_format = %(asctime)s %(levelname)s %(message)s
Weitere Informationen finden Sie unter Live-Logs.
- log_cli_level¶
Legt die minimale Log-Nachrichtenstufe fest, die für die Live-Protokollierung erfasst werden soll. Es können die ganzzahligen Werte oder die Namen der Stufen verwendet werden.
[pytest] log_cli_level = "INFO"
[pytest] log_cli_level = INFO
Weitere Informationen finden Sie unter Live-Logs.
- log_date_format¶
Legt eine mit
time.strftime()kompatible Zeichenkette fest, die zur Formatierung von Daten für die Protokollierungserfassung verwendet wird.[pytest] log_date_format = "%Y-%m-%d %H:%M:%S"
[pytest] log_date_format = %Y-%m-%d %H:%M:%S
Weitere Informationen finden Sie unter Wie man die Protokollierung verwaltet.
- log_file¶
Legt einen Dateinamen relativ zum aktuellen Arbeitsverzeichnis fest, in den Log-Nachrichten zusätzlich zu den anderen aktiven Protokollierungsfunktionen geschrieben werden sollen.
[pytest] log_file = "logs/pytest-logs.txt"
[pytest] log_file = logs/pytest-logs.txt
Weitere Informationen finden Sie unter Wie man die Protokollierung verwaltet.
- log_file_date_format¶
Legt eine mit
time.strftime()kompatible Zeichenkette fest, die zur Formatierung von Daten für die Protokolldatei verwendet wird.[pytest] log_file_date_format = "%Y-%m-%d %H:%M:%S"
[pytest] log_file_date_format = %Y-%m-%d %H:%M:%S
Weitere Informationen finden Sie unter Wie man die Protokollierung verwaltet.
- log_file_format¶
Legt eine mit
loggingkompatible Zeichenkette fest, die zur Formatierung von Log-Nachrichten verwendet wird, die in die Protokolldatei umgeleitet werden.[pytest] log_file_format = "%(asctime)s %(levelname)s %(message)s"
[pytest] log_file_format = %(asctime)s %(levelname)s %(message)s
Weitere Informationen finden Sie unter Wie man die Protokollierung verwaltet.
- log_file_level¶
Legt die minimale Log-Nachrichtenstufe fest, die für die Protokolldatei erfasst werden soll. Es können die ganzzahligen Werte oder die Namen der Stufen verwendet werden.
[pytest] log_file_level = "INFO"
[pytest] log_file_level = INFO
Weitere Informationen finden Sie unter Wie man die Protokollierung verwaltet.
- log_file_mode¶
Legt den Modus fest, mit dem die Protokolldatei geöffnet wird. Die Optionen sind
"w"zum Neuerstellen der Datei (Standard) oder"a"zum Anhängen an die Datei.[pytest] log_file_mode = "a"
[pytest] log_file_mode = a
Weitere Informationen finden Sie unter Wie man die Protokollierung verwaltet.
- log_format¶
Legt eine mit
loggingkompatible Zeichenkette fest, die zur Formatierung von erfassten Log-Nachrichten verwendet wird.[pytest] log_format = "%(asctime)s %(levelname)s %(message)s"
[pytest] log_format = %(asctime)s %(levelname)s %(message)s
Weitere Informationen finden Sie unter Wie man die Protokollierung verwaltet.
- log_level¶
Legt die minimale Log-Nachrichtenstufe fest, die für die Protokollierungserfassung erfasst werden soll. Es können die ganzzahligen Werte oder die Namen der Stufen verwendet werden.
[pytest] log_level = "INFO"
[pytest] log_level = INFO
Weitere Informationen finden Sie unter Wie man die Protokollierung verwaltet.
- markers¶
Wenn die Konfigurationsoption
strict_markersgesetzt ist, sind nur bekannte Marker – definiert im Code von core pytest oder einem Plugin – zulässig.Sie können zusätzliche Marker in dieser Einstellung auflisten, um sie zur Whitelist hinzuzufügen. In diesem Fall möchten Sie wahrscheinlich
strict_markersauftruesetzen, um zukünftige Regressionen zu vermeiden.[pytest] addopts = ["--strict-markers"] markers = ["slow", "serial"]
[pytest] strict_markers = true markers = slow serial
- minversion¶
Gibt eine minimale pytest-Version an, die für die Ausführung von Tests erforderlich ist.
[pytest] minversion = 3.0 # will fail if we run with pytest-2.8
[pytest] minversion = 3.0 # will fail if we run with pytest-2.8
- norecursedirs¶
Legt die Muster für Basisnamen von Verzeichnissen fest, die beim Rekursieren nach Testentdeckung vermieden werden sollen. Die einzelnen (fnmatch-artigen) Muster werden auf den Basisnamen eines Verzeichnisses angewendet, um zu entscheiden, ob es rekursiv durchsucht werden soll. Mustervergleichszeichen
* matches everything ? matches any single character [seq] matches any character in seq [!seq] matches any char not in seq
Standardmuster sind
'*.egg','.*','_darcs','build','CVS','dist','node_modules','venv','{arch}'. Das Setzen vonnorecursedirsersetzt die Standardwerte. Hier ist ein Beispiel, wie bestimmte Verzeichnisse vermieden werden können[pytest] norecursedirs = [".svn", "_build", "tmp*"]
[pytest] norecursedirs = .svn _build tmp*
Dies würde
pytestanweisen, nicht in typische Subversion- oder sphinx-build-Verzeichnisse oder in Verzeichnisse mit dem Präfixtmpzu schauen.Zusätzlich versucht
pytest, eine virtuelle Umgebung intelligent zu identifizieren und zu ignorieren. Jedes Verzeichnis, das als Stammverzeichnis einer virtuellen Umgebung gilt, wird bei der Testsammlung nicht berücksichtigt, es sei denn,--collect-in-virtualenvwird angegeben. Beachten Sie auch, dassnorecursedirsVorrang vor--collect-in-virtualenvhat. Wenn Sie beispielsweise Tests in einer virtuellen Umgebung mit einem Basisverzeichnis ausführen möchten, das'.*'entspricht, **müssen** Sienorecursedirsüberschreiben und zusätzlich das Flag--collect-in-virtualenvverwenden.
- python_classes¶
Ein oder mehrere Namenspräfixe oder Glob-Muster, die bestimmen, welche Klassen für die Testsammlung berücksichtigt werden. Suchen Sie nach mehreren Glob-Mustern, indem Sie Leerzeichen zwischen den Mustern einfügen. Standardmäßig berücksichtigt pytest jede Klasse mit dem Präfix
Testals Testsammlung. Hier ist ein Beispiel, wie Tests aus Klassen gesammelt werden können, die aufSuiteenden.[pytest] python_classes = ["*Suite"]
[pytest] python_classes = *Suite
Beachten Sie, dass von
unittest.TestCaseabgeleitete Klassen immer unabhängig von dieser Option gesammelt werden, da das eigene Sammel-Framework vonunittestzur Sammlung dieser Tests verwendet wird.
- python_files¶
Ein oder mehrere glob-artige Dateimuster, die bestimmen, welche Python-Dateien als Testmodule betrachtet werden. Suchen Sie nach mehreren Glob-Mustern, indem Sie Leerzeichen zwischen den Mustern einfügen.
[pytest] python_files = ["test_*.py", "check_*.py", "example_*.py"]
[pytest] python_files = test_*.py check_*.py example_*.py
Oder eine pro Zeile.
[pytest] python_files = test_*.py check_*.py example_*.py
Standardmäßig werden Dateien, die mit
test_*.pyund*_test.pyübereinstimmen, als Testmodule betrachtet.
- python_functions¶
Ein oder mehrere Namenspräfixe oder Glob-Muster, die bestimmen, welche Testfunktionen und -methoden als Tests betrachtet werden. Suchen Sie nach mehreren Glob-Mustern, indem Sie Leerzeichen zwischen den Mustern einfügen. Standardmäßig betrachtet pytest jede Funktion mit dem Präfix
testals Test. Hier ist ein Beispiel, wie Testfunktionen und -methoden gesammelt werden können, die auf_testenden.[pytest] python_functions = ["*_test"]
[pytest] python_functions = *_test
Beachten Sie, dass dies keine Auswirkung auf Methoden hat, die in einer von
unittest.TestCaseabgeleiteten Klasse leben, da das eigene Sammel-Framework vonunittestzur Sammlung dieser Tests verwendet wird.Siehe Namenskonventionen ändern für detailliertere Beispiele.
- pythonpath¶
Legt eine Liste von Verzeichnissen fest, die dem Python-Suchpfad hinzugefügt werden sollen. Verzeichnisse werden am Anfang von
sys.pathhinzugefügt. Ähnlich wie die UmgebungsvariablePYTHONPATHwerden die Verzeichnisse dort einbezogen, wo Python nach importierten Modulen sucht. Pfade sind relativ zum rootdir Verzeichnis. Verzeichnisse bleiben für die Dauer der Testsitzung im Pfad.[pytest] pythonpath = ["src1", "src2"]
[pytest] pythonpath = src1 src2
- required_plugins¶
Eine durch Leerzeichen getrennte Liste von Plugins, die vorhanden sein müssen, damit pytest ausgeführt werden kann. Plugins können mit oder ohne Versionsspezifizierer direkt nach ihrem Namen aufgeführt werden. Leerzeichen zwischen verschiedenen Versionsspezifizierern sind nicht erlaubt. Wenn eines der Plugins nicht gefunden wird, wird ein Fehler ausgegeben.
[pytest] required_plugins = ["pytest-django>=3.0.0,<4.0.0", "pytest-html", "pytest-xdist>=1.0.0"]
[pytest] required_plugins = pytest-django>=3.0.0,<4.0.0 pytest-html pytest-xdist>=1.0.0
- strict¶
Wenn auf
truegesetzt, wird der „strict mode“ aktiviert, der die folgenden Optionen aktiviert:Plugins können auch ihre eigenen Strictness-Optionen aktivieren.
Wenn Sie eine einzelne Strictness-Option explizit setzen, hat diese Vorrang vor
strict.Hinweis
Wenn pytest in Zukunft neue Strictness-Optionen hinzufügt, werden diese auch im Strict-Modus aktiviert. Daher sollten Sie den Strict-Modus nur aktivieren, wenn Sie eine angepinnte/gesperrte Version von pytest verwenden oder wenn Sie neue Strictness-Optionen proaktiv übernehmen möchten, sobald sie hinzugefügt werden.
[pytest] strict = true
[pytest] strict = true
Hinzugefügt in Version 9.0.
- strict_config¶
Wenn auf
truegesetzt, werden alle Warnungen, die beim Parsen despytestAbschnitts der Konfigurationsdatei auftreten, als Fehler behandelt.[pytest] strict_config = true
[pytest] strict_config = true
Sie können diese Option auch über die Option
strictaktivieren.
- strict_markers¶
Wenn auf
truegesetzt, lösen Marker, die nicht im Abschnittmarkersder Konfigurationsdatei registriert sind, Fehler aus.[pytest] strict_markers = true
[pytest] strict_markers = true
Sie können diese Option auch über die Option
strictaktivieren.
- strict_parametrization_ids¶
Wenn auf
truegesetzt, gibt pytest einen Fehler aus, wenn es nicht eindeutige Parametersatz-IDs erkennt.Wenn nicht gesetzt (Standard), behandelt pytest dies automatisch, indem es
0,1, ... zu doppelten IDs hinzufügt und sie so eindeutig macht.[pytest] strict_parametrization_ids = true
[pytest] strict_parametrization_ids = true
Sie können diese Option auch über die Option
strictaktivieren.Zum Beispiel,
import pytest @pytest.mark.parametrize("letter", ["a", "a"]) def test_letter_is_ascii(letter): assert letter.isascii()
wird einen Fehler auslösen, da beide Fälle (Parametersätze) die gleiche automatisch generierte ID „a“ haben.
Um den Fehler zu beheben, weisen Sie explizit eindeutige IDs zu, wenn Sie die Duplikate beibehalten möchten.
import pytest @pytest.mark.parametrize("letter", ["a", "a"], ids=["a0", "a1"]) def test_letter_is_ascii(letter): assert letter.isascii()
Siehe
parametrizeundpytest.param()für andere Möglichkeiten, IDs festzulegen.
- strict_xfail¶
Wenn auf
truegesetzt, schlagen Tests, die mit@pytest.mark.xfailmarkiert sind und tatsächlich erfolgreich sind, standardmäßig die Testsuite. Weitere Informationen finden Sie unter strict Parameter.[pytest] strict_xfail = true
[pytest] strict_xfail = true
Sie können diese Option auch über die Option
strictaktivieren.Geändert in Version 9.0: Umbenannt von
xfail_strictinstrict_xfail.xfail_strictwird als Alias fürstrict_xfailakzeptiert.
- testpaths¶
Legt eine Liste von Verzeichnissen fest, die nach Tests durchsucht werden sollen, wenn bei der Ausführung von pytest vom rootdir Verzeichnis keine spezifischen Verzeichnisse, Dateien oder Test-IDs auf der Befehlszeile angegeben werden. Dateisystempfade können Shell-ähnliche Wildcards verwenden, einschließlich des rekursiven Musters
**.Nützlich, wenn sich alle Projekt-Tests an einem bekannten Ort befinden, um die Testsammlung zu beschleunigen und versehentliches Aufnehmen unerwünschter Tests zu vermeiden.
[pytest] testpaths = ["testing", "doc"]
[pytest] testpaths = testing doc
Diese Konfiguration bedeutet, dass die Ausführung von
pytestdie gleichen praktischen Auswirkungen hat wie die Ausführung von
pytest testing doc
- tmp_path_retention_count¶
Wie viele Sitzungen sollen die
tmp_pathVerzeichnisse beibehalten werden, gemäßtmp_path_retention_policy.[pytest] tmp_path_retention_count = 3
[pytest] tmp_path_retention_count = 3
Standard:
3
- tmp_path_retention_policy¶
Steuert, welche Verzeichnisse, die von der
tmp_pathFixture erstellt wurden, basierend auf dem Testergebnis beibehalten werden.all: behält Verzeichnisse für alle Tests, unabhängig vom Ergebnis.failed: behält Verzeichnisse nur für Tests mit dem Ergebniserroroderfailed.none: Verzeichnisse werden immer nach Abschluss jedes Tests entfernt, unabhängig vom Ergebnis.
[pytest] tmp_path_retention_policy = "all"
[pytest] tmp_path_retention_policy = all
Standard:
all
- truncation_limit_chars¶
Steuert die maximale Anzahl von Zeichen, um den Inhalt von Assertionsmeldungen zu kürzen.
Wenn der Wert auf
0gesetzt wird, wird das Zeichenlimit für die Kürzung deaktiviert.[pytest] truncation_limit_chars = 640
[pytest] truncation_limit_chars = 640
pytest kürzt die Assertionsmeldungen standardmäßig auf eine bestimmte Grenze, um zu verhindern, dass Vergleiche mit großen Datenmengen die Konsolenausgabe überlasten.
Standard:
640Hinweis
Wenn pytest erkennt, dass es in einer CI-Umgebung ausgeführt wird, wird die Kürzung automatisch deaktiviert.
- truncation_limit_lines¶
Steuert die maximale Anzahl von Zeilen, um den Inhalt von Assertionsmeldungen zu kürzen.
Wenn der Wert auf
0gesetzt wird, wird das Zeilenlimit für die Kürzung deaktiviert.[pytest] truncation_limit_lines = 8
[pytest] truncation_limit_lines = 8
pytest kürzt die Assertionsmeldungen standardmäßig auf eine bestimmte Grenze, um zu verhindern, dass Vergleiche mit großen Datenmengen die Konsolenausgabe überlasten.
Standard:
8Hinweis
Wenn pytest erkennt, dass es in einer CI-Umgebung ausgeführt wird, wird die Kürzung automatisch deaktiviert.
- usefixtures¶
Liste von Fixtures, die auf alle Testfunktionen angewendet werden; dies ist semantisch dasselbe wie die Anwendung des Markers
@pytest.mark.usefixturesauf alle Testfunktionen.[pytest] usefixtures = ["clean_db"]
[pytest] usefixtures = clean_db
- verbosity_assertions¶
Legt eine Detailgenauigkeitsstufe speziell für assertionsbezogene Ausgaben fest und überschreibt die anwendungsweite Stufe.
[pytest] verbosity_assertions = "2"
[pytest] verbosity_assertions = 2
Wenn nicht gesetzt, wird standardmäßig die anwendungsweite Detailgenauigkeitsstufe (über die Kommandozeilenoption
-v) verwendet. Ein spezieller Wert von"auto"kann verwendet werden, um explizit die globale Detailgenauigkeitsstufe zu verwenden.
- verbosity_subtests¶
Legt die Detailgenauigkeitsstufe speziell für **erfolgreiche** Subtests fest.
[pytest] verbosity_subtests = "1"
[pytest] verbosity_subtests = 1
Ein Wert von
1oder höher zeigt die Ausgabe für **erfolgreiche** Subtests an ( **fehlgeschlagene** Subtests werden immer gemeldet). Die Ausgabe für erfolgreiche Subtests kann mit dem Wert0unterdrückt werden, was die Kommandozeilenoption-vüberschreibt.Wenn nicht gesetzt, wird standardmäßig die anwendungsweite Detailgenauigkeitsstufe (über die Kommandozeilenoption
-v) verwendet. Ein spezieller Wert von"auto"kann verwendet werden, um explizit die globale Detailgenauigkeitsstufe zu verwenden.Siehe auch: Wie man Subtests verwendet.
- verbosity_test_cases¶
Legt eine Detailgenauigkeitsstufe speziell für testfallausführungsbezogene Ausgaben fest und überschreibt die anwendungsweite Stufe.
[pytest] verbosity_test_cases = "2"
[pytest] verbosity_test_cases = 2
Wenn nicht gesetzt, wird standardmäßig die anwendungsweite Detailgenauigkeitsstufe (über die Kommandozeilenoption
-v) verwendet. Ein spezieller Wert von"auto"kann verwendet werden, um explizit die globale Detailgenauigkeitsstufe zu verwenden.
Kommandozeilen-Flags¶
Alle Kommandozeilen-Flags erhalten Sie, indem Sie pytest --help ausführen.
$ pytest --help
usage: pytest [options] [file_or_dir] [file_or_dir] [...]
positional arguments:
file_or_dir
general:
-k EXPRESSION Only run tests which match the given substring
expression. An expression is a Python evaluable
expression where all names are substring-matched
against test names and their parent classes.
Example: -k 'test_method or test_other' matches all
test functions and classes whose name contains
'test_method' or 'test_other', while -k 'not
test_method' matches those that don't contain
'test_method' in their names. -k 'not test_method
and not test_other' will eliminate the matches.
Additionally keywords are matched to classes and
functions containing extra names in their
'extra_keyword_matches' set, as well as functions
which have names assigned directly to them. The
matching is case-insensitive.
-m MARKEXPR Only run tests matching given mark expression. For
example: -m 'mark1 and not mark2'.
--markers show markers (builtin, plugin and per-project ones).
-x, --exitfirst Exit instantly on first error or failed test
--maxfail=num Exit after first num failures or errors
--strict-config Enables the strict_config option
--strict-markers Enables the strict_markers option
--strict Enables the strict option
--fixtures, --funcargs
Show available fixtures, sorted by plugin appearance
(fixtures with leading '_' are only shown with '-v')
--fixtures-per-test Show fixtures per test
--pdb Start the interactive Python debugger on errors or
KeyboardInterrupt
--pdbcls=modulename:classname
Specify a custom interactive Python debugger for use
with --pdb.For example:
--pdbcls=IPython.terminal.debugger:TerminalPdb
--trace Immediately break when running each test
--capture=method Per-test capturing method: one of fd|sys|no|tee-sys
-s Shortcut for --capture=no
--runxfail Report the results of xfail tests as if they were
not marked
--lf, --last-failed Rerun only the tests that failed at the last run (or
all if none failed)
--ff, --failed-first Run all tests, but run the last failures first. This
may re-order tests and thus lead to repeated fixture
setup/teardown.
--nf, --new-first Run tests from new files first, then the rest of the
tests sorted by file mtime
--cache-show=[CACHESHOW]
Show cache contents, don't perform collection or
tests. Optional argument: glob (default: '*').
--cache-clear Remove all cache contents at start of test run
--lfnf, --last-failed-no-failures={all,none}
With ``--lf``, determines whether to execute tests
when there are no previously (known) failures or
when no cached ``lastfailed`` data was found.
``all`` (the default) runs the full test suite
again. ``none`` just emits a message about no known
failures and exits successfully.
--sw, --stepwise Exit on test failure and continue from last failing
test next time
--sw-skip, --stepwise-skip
Ignore the first failing test but stop on the next
failing test. Implicitly enables --stepwise.
--sw-reset, --stepwise-reset
Resets stepwise state, restarting the stepwise
workflow. Implicitly enables --stepwise.
Reporting:
--durations=N Show N slowest setup/test durations (N=0 for all)
--durations-min=N Minimal duration in seconds for inclusion in slowest
list. Default: 0.005 (or 0.0 if -vv is given).
-v, --verbose Increase verbosity
--no-header Disable header
--no-summary Disable summary
--no-fold-skipped Do not fold skipped tests in short summary.
--force-short-summary
Force condensed summary output regardless of
verbosity level.
-q, --quiet Decrease verbosity
--verbosity=VERBOSE Set verbosity. Default: 0.
-r chars Show extra test summary info as specified by chars:
(f)ailed, (E)rror, (s)kipped, (x)failed, (X)passed,
(p)assed, (P)assed with output, (a)ll except passed
(p/P), or (A)ll. (w)arnings are enabled by default
(see --disable-warnings), 'N' can be used to reset
the list. (default: 'fE').
--disable-warnings, --disable-pytest-warnings
Disable warnings summary
-l, --showlocals Show locals in tracebacks (disabled by default)
--no-showlocals Hide locals in tracebacks (negate --showlocals
passed through addopts)
--tb=style Traceback print mode
(auto/long/short/line/native/no)
--xfail-tb Show tracebacks for xfail (as long as --tb != no)
--show-capture={no,stdout,stderr,log,all}
Controls how captured stdout/stderr/log is shown on
failed tests. Default: all.
--full-trace Don't cut any tracebacks (default is to cut)
--color=color Color terminal output (yes/no/auto)
--code-highlight={yes,no}
Whether code should be highlighted (only if --color
is also enabled). Default: yes.
--pastebin=mode Send failed|all info to bpaste.net pastebin service
--junitxml, --junit-xml=path
Create junit-xml style report file at given path
--junitprefix, --junit-prefix=str
Prepend prefix to classnames in junit-xml output
pytest-warnings:
-W, --pythonwarnings PYTHONWARNINGS
Set which warnings to report, see -W option of
Python itself
collection:
--collect-only, --co Only collect tests, don't execute them
--pyargs Try to interpret all arguments as Python packages
--ignore=path Ignore path during collection (multi-allowed)
--ignore-glob=path Ignore path pattern during collection (multi-
allowed)
--deselect=nodeid_prefix
Deselect item (via node id prefix) during collection
(multi-allowed)
--confcutdir=dir Only load conftest.py's relative to specified dir
--noconftest Don't load any conftest.py files
--keep-duplicates Keep duplicate tests
--collect-in-virtualenv
Don't ignore tests in a local virtualenv directory
--continue-on-collection-errors
Force test execution even if collection errors occur
--import-mode={prepend,append,importlib}
Prepend/append to sys.path when importing test
modules and conftest files. Default: prepend.
--doctest-modules Run doctests in all .py modules
--doctest-report={none,cdiff,ndiff,udiff,only_first_failure}
Choose another output format for diffs on doctest
failure
--doctest-glob=pat Doctests file matching pattern, default: test*.txt
--doctest-ignore-import-errors
Ignore doctest collection errors
--doctest-continue-on-failure
For a given doctest, continue to run after the first
failure
test session debugging and configuration:
-c, --config-file FILE
Load configuration from `FILE` instead of trying to
locate one of the implicit configuration files.
--rootdir=ROOTDIR Define root directory for tests. Can be relative
path: 'root_dir', './root_dir',
'root_dir/another_dir/'; absolute path:
'/home/user/root_dir'; path with variables:
'$HOME/root_dir'.
--basetemp=dir Base temporary directory for this test run.
(Warning: this directory is removed if it exists.)
-V, --version Display pytest version and information about
plugins. When given twice, also display information
about plugins.
-h, --help Show help message and configuration info
-p name Early-load given plugin module name or entry point
(multi-allowed). To avoid loading of plugins, use
the `no:` prefix, e.g. `no:doctest`. See also
--disable-plugin-autoload.
--disable-plugin-autoload
Disable plugin auto-loading through entry point
packaging metadata. Only plugins explicitly
specified in -p or env var PYTEST_PLUGINS will be
loaded.
--trace-config Trace considerations of conftest.py files
--debug=[DEBUG_FILE_NAME]
Store internal tracing debug information in this log
file. This file is opened with 'w' and truncated as
a result, care advised. Default: pytestdebug.log.
-o, --override-ini OVERRIDE_INI
Override configuration option with "option=value"
style, e.g. `-o strict_xfail=True -o
cache_dir=cache`.
--assert=MODE Control assertion debugging tools.
'plain' performs no assertion debugging.
'rewrite' (the default) rewrites assert statements
in test modules on import to provide assert
expression information.
--setup-only Only setup fixtures, do not execute tests
--setup-show Show setup of fixtures while executing tests
--setup-plan Show what fixtures and tests would be executed but
don't execute anything
logging:
--log-level=LEVEL Level of messages to catch/display. Not set by
default, so it depends on the root/parent log
handler's effective level, where it is "WARNING" by
default.
--log-format=LOG_FORMAT
Log format used by the logging module
--log-date-format=LOG_DATE_FORMAT
Log date format used by the logging module
--log-cli-level=LOG_CLI_LEVEL
CLI logging level
--log-cli-format=LOG_CLI_FORMAT
Log format used by the logging module
--log-cli-date-format=LOG_CLI_DATE_FORMAT
Log date format used by the logging module
--log-file=LOG_FILE Path to a file when logging will be written to
--log-file-mode={w,a}
Log file open mode
--log-file-level=LOG_FILE_LEVEL
Log file logging level
--log-file-format=LOG_FILE_FORMAT
Log format used by the logging module
--log-file-date-format=LOG_FILE_DATE_FORMAT
Log date format used by the logging module
--log-auto-indent=LOG_AUTO_INDENT
Auto-indent multiline messages passed to the logging
module. Accepts true|on, false|off or an integer.
--log-disable=LOGGER_DISABLE
Disable a logger by name. Can be passed multiple
times.
[pytest] configuration options in the first pytest.toml|pytest.ini|tox.ini|setup.cfg|pyproject.toml file found:
markers (linelist): Register new markers for test functions
empty_parameter_set_mark (string):
Default marker for empty parametersets
strict_config (bool): Any warnings encountered while parsing the `pytest`
section of the configuration file raise errors
strict_markers (bool):
Markers not registered in the `markers` section of
the configuration file raise errors
strict (bool): Enables all strictness options, currently:
strict_config, strict_markers, strict_xfail,
strict_parametrization_ids
filterwarnings (linelist):
Each line specifies a pattern for
warnings.filterwarnings. Processed after
-W/--pythonwarnings.
norecursedirs (args): Directory patterns to avoid for recursion
testpaths (args): Directories to search for tests when no files or
directories are given on the command line
collect_imported_tests (bool):
Whether to collect tests in imported modules outside
`testpaths`
consider_namespace_packages (bool):
Consider namespace packages when resolving module
names during import
usefixtures (args): List of default fixtures to be used with this
project
python_files (args): Glob-style file patterns for Python test module
discovery
python_classes (args):
Prefixes or glob names for Python test class
discovery
python_functions (args):
Prefixes or glob names for Python test function and
method discovery
disable_test_id_escaping_and_forfeit_all_rights_to_community_support (bool):
Disable string escape non-ASCII characters, might
cause unwanted side effects(use at your own risk)
strict_parametrization_ids (bool):
Emit an error if non-unique parameter set IDs are
detected
console_output_style (string):
Console output: "classic", or with additional
progress information ("progress" (percentage) |
"count" | "progress-even-when-capture-no" (forces
progress even when capture=no)
verbosity_test_cases (string):
Specify a verbosity level for test case execution,
overriding the main level. Higher levels will
provide more detailed information about each test
case executed.
strict_xfail (bool): Default for the strict parameter of xfail markers
when not given explicitly (default: False) (alias:
xfail_strict)
tmp_path_retention_count (string):
How many sessions should we keep the `tmp_path`
directories, according to
`tmp_path_retention_policy`.
tmp_path_retention_policy (string):
Controls which directories created by the `tmp_path`
fixture are kept around, based on test outcome.
(all/failed/none)
enable_assertion_pass_hook (bool):
Enables the pytest_assertion_pass hook. Make sure to
delete any previously generated pyc cache files.
truncation_limit_lines (string):
Set threshold of LINES after which truncation will
take effect
truncation_limit_chars (string):
Set threshold of CHARS after which truncation will
take effect
verbosity_assertions (string):
Specify a verbosity level for assertions, overriding
the main level. Higher levels will provide more
detailed explanation when an assertion fails.
junit_suite_name (string):
Test suite name for JUnit report
junit_logging (string):
Write captured log messages to JUnit report: one of
no|log|system-out|system-err|out-err|all
junit_log_passing_tests (bool):
Capture log information for passing tests to JUnit
report:
junit_duration_report (string):
Duration time to report: one of total|call
junit_family (string):
Emit XML for schema: one of legacy|xunit1|xunit2
doctest_optionflags (args):
Option flags for doctests
doctest_encoding (string):
Encoding used for doctest files
cache_dir (string): Cache directory path
log_level (string): Default value for --log-level
log_format (string): Default value for --log-format
log_date_format (string):
Default value for --log-date-format
log_cli (bool): Enable log display during test run (also known as
"live logging")
log_cli_level (string):
Default value for --log-cli-level
log_cli_format (string):
Default value for --log-cli-format
log_cli_date_format (string):
Default value for --log-cli-date-format
log_file (string): Default value for --log-file
log_file_mode (string):
Default value for --log-file-mode
log_file_level (string):
Default value for --log-file-level
log_file_format (string):
Default value for --log-file-format
log_file_date_format (string):
Default value for --log-file-date-format
log_auto_indent (string):
Default value for --log-auto-indent
faulthandler_timeout (string):
Dump the traceback of all threads if a test takes
more than TIMEOUT seconds to finish
faulthandler_exit_on_timeout (bool):
Exit the test process if a test takes more than
faulthandler_timeout seconds to finish
verbosity_subtests (string):
Specify verbosity level for subtests. Higher levels
will generate output for passed subtests. Failed
subtests are always reported.
addopts (args): Extra command line options
minversion (string): Minimally required pytest version
pythonpath (paths): Add paths to sys.path
required_plugins (args):
Plugins that must be present for pytest to run
Environment variables:
CI When set to a non-empty value, pytest knows it is running in a CI process and does not truncate summary info
BUILD_NUMBER Equivalent to CI
PYTEST_ADDOPTS Extra command line options
PYTEST_PLUGINS Comma-separated plugins to load during startup
PYTEST_DISABLE_PLUGIN_AUTOLOAD Set to disable plugin auto-loading
PYTEST_DEBUG Set to enable debug tracing of pytest's internals
PYTEST_DEBUG_TEMPROOT Override the system temporary directory
PYTEST_THEME The Pygments style to use for code output
PYTEST_THEME_MODE Set the PYTEST_THEME to be either 'dark' or 'light'
to see available markers type: pytest --markers
to see available fixtures type: pytest --fixtures
(shown according to specified file_or_dir or current dir if not specified; fixtures with leading '_' are only shown with the '-v' option