PyTest: Python-Testframework für Backend-Entwickler

0 Aktien
0
0
0
0

Einführung

Als Support- oder QA-/Testingenieur ist es wichtig, die Qualität und Zuverlässigkeit Ihres Codes sicherzustellen. Eine Möglichkeit hierfür ist die Verwendung von Python-Testframeworks, um den Testprozess zu automatisieren und Fehler oder Probleme in Ihrem Code vor der Veröffentlichung oder dem Deployment der Software zu identifizieren.

Sie bieten folgende Vorteile:

  • Testframeworks verbessern die Codequalität.
  • Automatisierte Tests sparen Zeit und Aufwand.
  • Die Wiederverwendbarkeit von Code optimiert den Testaufwand und reduziert Wiederholungen.
  • Python-Testframeworks lassen sich nahtlos in andere Tools, Module und Bibliotheken integrieren.

In dieser Schritt-für-Schritt-Anleitung lernen Sie, wie Sie PyTest implementieren – eines der beliebtesten Python-Testframeworks.

Voraussetzungen

Bevor wir uns mit den Details von Python-Testframeworks befassen, konzentrieren wir uns zunächst auf die Voraussetzungen für die Implementierung von PyTest.

  • Installation von Python: Bitte stellen Sie sicher, dass Python auf Ihrem System installiert ist. Sie können die neueste Version von Python von der offiziellen Python-Website herunterladen.
  • Installieren Sie Pip: Pip (Package Installer for Python) ist ein Tool zur Verwaltung von Paketen, Bibliotheken und Abhängigkeiten in Python. Es ermöglicht die Installation und Verwaltung von Python-Paketen. Stellen Sie sicher, dass Pip auf Ihrem System installiert ist.

Sie können überprüfen, ob pip installiert ist, indem Sie folgenden Befehl in Ihrer Befehlszeile/Ihrem Terminal ausführen:

python -m pip --version

Oder

python3 -m pip --version

Was ist ein Python-Testframework?

Ein Python-Testframework ist eine Sammlung von Werkzeugen und Bibliotheken, die Struktur und Richtlinien für das Schreiben und Ausführen von Tests in Python zur automatisierten Testausführung bieten. Es stellt sicher, dass der Code die gewünschten Qualitätsstandards erfüllt. Es ist unerlässlich und nützlich für jeden Backend-Entwickler, Software-Ingenieur, DevOps- und QA-/Testingenieur. Zu den bekanntesten und am weitesten verbreiteten Python-Testframeworks gehören Pytest, PyUnit, DocTest, Testify, Robot und viele mehr.

PyTest-Implementierung

PyTest installieren

Um PyTest zu verwenden, müssen Sie es auf Ihrem System installieren. Öffnen Sie Ihr Terminal und führen Sie folgenden Befehl aus:

pip install pytest

Dieser Befehl lädt die neueste Version von PyTest und dessen Abhängigkeiten herunter und installiert sie.

Schreibtestaufgaben

Nachdem PyTest nun installiert ist, beginnen wir mit dem Schreiben einiger grundlegender Unit-Testfälle.

Bitte erstellen Sie eine neue Python-Datei und benennen Sie sie. test_backend.py Diese Datei definiert unsere Testfälle mithilfe der PyTest-Syntax.

Hinweis: Standardmäßig erkennt und führt PyTest alle Testfälle in Dateien aus, deren Namen mit «test_» beginnen oder mit «_test» enden. Der Suchprozess von PyTest durchsucht rekursiv den aktuellen Ordner und seine Unterordner nach Dateien, die mit ”test_“ beginnen oder mit ”_test“ enden. Anschließend werden die Tests in diesen Dateien ausgeführt.

import pytest
def test_addition():
assert 3 + 3 == 6
def test_subtraction():
assert 5 - 4 == 1
def test_multiplication():
assert 4 * 4 == 16
def test_division():
assert 10 / 2 == 5

Im obigen Beispiel haben wir vier grundlegende Unit-Tests als Funktionen definiert: `test_addition`, `test_subtraction`, `test_multiplication` und `test_division`. Das Schlüsselwort `assert` wird beim Debuggen von Code verwendet und ermöglicht es, zu prüfen, ob eine bestimmte Bedingung im Code `True` zurückgibt. Andernfalls wird eine `AssertionError` zurückgegeben.

Testfälle ausführen, spezifische Tests ausführen

Um die Tests auszuführen, wechseln Sie in den Ordner, in dem Sie die Datei test_backend.py gespeichert haben, und führen Sie dann den folgenden Befehl in Ihrem Terminal oder Ihrer Befehlszeile aus:

pytest

Oder

python -m pytest

Ausgabe:

Output
test session starts
==================================================
platform darwin -- Python 3.9.6, pytest-7.4.3, pluggy-1.3.0
rootdir: ~/Python Testing Frameworks
collected 4 items
test_backend.py ....
==================================================
4 passed in 0.01s 

Bei der Verwendung von PyTest müssen Sie nicht jeden Test in Ihrer Datei manuell ausführen. Das Tool findet und führt automatisch alle definierten Testfälle aus. Wenn alles erfolgreich verläuft und alle Zusicherungen korrekt sind, erhalten Sie eine übersichtliche Zusammenfassung der Testergebnisse sowie die Anzahl der bestandenen Tests, wie oben dargestellt.

Nehmen wir an, einer der Tests schlägt zu diesem Zeitpunkt fehl; dann erhalten wir folgende Ausgabe:

Output
test session starts
==================================================
platform darwin -- Python 3.9.6, pytest-7.4.3, pluggy-1.3.0
rootdir: ~/Python Testing Frameworks
collected 4 items
test_backend.py ...F 
================================================== [100%]
FAILURES
==================================================
test_division 
def test_division():
> assert 10 / 2 == 6
E assert (10 / 2) == 6
test_backend.py:13: AssertionError
short test summary info
==================================================
FAILED test_backend.py::**test_division** - assert (10 / 2) == 6
1 failed, 3 passed in 0.01s 
Experimentelle Entdeckung

PyTest bietet leistungsstarke Funktionen zur Testfallerkennung, mit denen Sie Ihre Testfälle strukturiert organisieren können. Standardmäßig erkennt und führt PyTest alle Testfälle in Dateien aus, deren Namen mit «test_» beginnen oder auf «_test» enden. Sie können die Testfallerkennung jedoch mithilfe verschiedener Befehlszeilenoptionen oder durch Konfiguration einer Datei anpassen. pytest.ini Anpassen.

Beispielsweise können Sie ein bestimmtes Verzeichnis angeben, in dem nach Testmodulen gesucht werden soll, indem Sie den folgenden Befehl ausführen:

pytest tests/

Dieser Befehl führt nur die Testfälle im Verzeichnis “tests” aus.

Prüfgeräte

Die Testwerkzeuge in Pytest sind hervorragende, wiederverwendbare Komponenten, mit denen Sie eine konsistente Basis für Ihre Testfälle schaffen können. Sie sind besonders nützlich, wenn Sie Voraussetzungen für Ihre Tests festlegen oder Ressourcen nach Abschluss der Tests freigeben möchten. Pytest ermöglicht die einfache und elegante Definition und Verwendung von Testwerkzeugen.

Um eine Testvorrichtung zu definieren, müssen Sie den Dekorator verwenden. @pytest.fixture Beispielsweise öffnet eine unten definierte Fixture namens „db“ eine Datenbankverbindung und schließt diese nach der Operation wieder. Diese Fixture kann wie folgt definiert werden:

import pytest
@pytest.fixture
def db():
# Set up the database connection
db = create_db()
yield db
# Clean up the database connection
db.close()

In diesem Beispiel definiert die `yield`-Anweisung den Code, der nach der Ausführung der Testfälle ausgeführt wird. Das Schlüsselwort `yield` dient zur Steuerung des Ablaufs einer Generatorfunktion, ähnlich der `return`-Anweisung in Python, die Werte zurückgibt.

Um eine Testumgebung in einem Test zu verwenden, müssen Sie sie als Argument an die Testfunktion übergeben.

Zum Beispiel:

def query_test(db):
results = db.query("SELECT * FROM users")
assert len(result) == 12

In diesem Testfall ist die Vorrichtung db Automatische Funktion query_test() Es wird injiziert und ermöglicht die Durchführung von Datenbankoperationen. Fixtures sind für Entwickler nützlich, um spezifische Testumgebungen wie Datenbankverbindungen, API-Clients oder Mock-Objekte vorzubereiten. Mithilfe von Fixtures können Entwickler sicherstellen, dass Tests isoliert und reproduzierbar sind.

Testingenieure können die Ausrüstung auch nutzen, um das zu testende System vorzubereiten, Testdaten zu verwalten oder komplexe Szenarien zu simulieren.

Darüber hinaus können die Geräte verwendet werden, um Ressourcen nach dem Testen zu bereinigen, die Zuverlässigkeit zu verbessern und den Testdatensatz zu pflegen.

Ergebnis

In diesem Tutorial haben wir gelernt, wie man PyTest, eines der beliebtesten und funktionsreichsten Testframeworks für Python, implementiert und verwendet. Wir haben eine Schritt-für-Schritt-Anleitung zur Implementierung in Python gegeben. Das kontinuierliche Schreiben und Aktualisieren von Testfällen ist unerlässlich, wenn sich Ihre Codebasis weiterentwickelt. Indem Sie Zeit und Mühe in das Testen investieren, können Sie Fehler frühzeitig erkennen, die Codequalität verbessern und robustere und zuverlässigere Software entwickeln.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Das könnte Ihnen auch gefallen