Pytest - Spielpaarungen
Fixtures sind Funktionen, die vor jeder Testfunktion ausgeführt werden, auf die sie angewendet werden. Fixtures werden verwendet, um einige Daten in die Tests einzuspeisen, z. B. Datenbankverbindungen, zu testende URLs und Eingabedaten. Anstatt für jeden Test den gleichen Code auszuführen, können wir den Tests eine Fixture-Funktion hinzufügen, die ausgeführt wird und die Daten vor dem Ausführen jedes Tests an den Test zurückgibt.
Eine Funktion wird durch -
@pytest.fixture
Eine Testfunktion kann ein Gerät verwenden, indem der Name des Geräts als Eingabeparameter angegeben wird.
Erstellen Sie eine Datei test_div_by_3_6.py und fügen Sie den folgenden Code hinzu
import pytest
@pytest.fixture
def input_value():
input = 39
return input
def test_divisible_by_3(input_value):
assert input_value % 3 == 0
def test_divisible_by_6(input_value):
assert input_value % 6 == 0
Hier haben wir eine Fixture-Funktion namens input_value, die die Eingabe für die Tests liefert. Um auf die Fixture-Funktion zugreifen zu können, müssen die Tests den Fixture-Namen als Eingabeparameter angeben.
Pytest, während der Test ausgeführt wird, sieht den Namen des Geräts als Eingabeparameter. Anschließend wird die Fixture-Funktion ausgeführt und der zurückgegebene Wert wird im Eingabeparameter gespeichert, der vom Test verwendet werden kann.
Führen Sie den Test mit dem folgenden Befehl aus:
pytest -k divisible -v
Der obige Befehl generiert das folgende Ergebnis:
test_div_by_3_6.py::test_divisible_by_3 PASSED
test_div_by_3_6.py::test_divisible_by_6 FAILED
============================================== FAILURES
==============================================
________________________________________ test_divisible_by_6
_________________________________________
input_value = 39
def test_divisible_by_6(input_value):
> assert input_value % 6 == 0
E assert (39 % 6) == 0
test_div_by_3_6.py:12: AssertionError
========================== 1 failed, 1 passed, 6 deselected in 0.07 seconds
==========================
Der Ansatz hat jedoch seine eigene Einschränkung. Eine in einer Testdatei definierte Fixture-Funktion hat nur innerhalb der Testdatei einen Gültigkeitsbereich. Wir können dieses Gerät nicht in einer anderen Testdatei verwenden. Um ein Fixture für mehrere Testdateien verfügbar zu machen, müssen wir die Fixture-Funktion in einer Datei namens conftest.py definieren.conftest.py wird im nächsten Kapitel erklärt.