Automatisierung ist ein entscheidender Bestandteil der modernen Softwareentwicklung und -prüfung. Es spart Zeit, reduziert manuelle Fehler und sorgt für Konsistenz über alle Prozesse hinweg. Das Pytest-Framework ist eines der beliebtesten und leistungsstärksten Tools zur Automatisierung von Aufgaben in Python, insbesondere beim Testen. Es ist leichtgewichtig, einfach zu bedienen und bietet zahlreiche Plugins und integrierte Funktionen, um den Automatisierungsprozess zu vereinfachen.
In diesem Artikel werden wir die besten Möglichkeiten zur Automatisierung von Aufgaben mithilfe des Pytest-Frameworks untersuchen. Wir gehen drei praktische Beispiele durch und zeigen, wie Pytest verschiedene Arten von Aufgaben effektiv automatisieren kann.
Warum Pytest?
Bevor wir uns mit den Beispielen befassen, besprechen wir, warum Pytest eine gute Wahl für die Aufgabenautomatisierung ist:
Einfachheit: Pytest verfügt über eine einfache und prägnante Syntax, die das Schreiben und Lesen von Testfällen erleichtert.
Erweiterbarkeit: Mit einer breiten Palette an Plugins und Hooks kann Pytest erweitert werden, um unterschiedliche Testanforderungen zu unterstützen.
Fixtures: Pytest bietet Fixtures, eine leistungsstarke Funktion zum Einrichten von Vorbedingungen oder Zuständen für Tests, wodurch die Wiederverwendbarkeit verbessert wird.
Integration: Pytest lässt sich gut in andere Tools integrieren, einschließlich CI/CD-Plattformen, und ermöglicht so eine durchgängige Automatisierung.
Beispiel 1: API-Tests mit Pytest automatisieren
APIs sind das Rückgrat vieler Anwendungen und die Gewährleistung ihrer Zuverlässigkeit ist von entscheidender Bedeutung. Pytest erleichtert zusammen mit der Anforderungsbibliothek die Automatisierung von API-Tests.
Schritt 1: Erforderliche Bibliotheken installieren
Stellen Sie zunächst sicher, dass Sie Pytest und die Anforderungsbibliothek installiert haben:
Pip-Installations-Pytest-Anfragen
Schritt 2: Schreiben Sie das Testskript
Lassen Sie uns eine einfache GET-Anfrage an eine öffentliche API wie JSONPlaceholder automatisieren, eine gefälschte Online-REST-API zum Testen.
`Anfragen importieren
Pytest importieren
BASE_URL = „https://jsonplaceholder.typicode.com“
@pytest.fixture
def api_client():
# Dieses Fixture stellt ein Sitzungsobjekt zum Stellen von API-Anfragen bereit
session = request.Session()
Ertragssitzung
session.close()
def test_get_posts(api_client):
# Senden Sie eine GET-Anfrage, um Beiträge abzurufen
Antwort = api_client.get(f"{BASE_URL}/posts")
# Behauptungen
Assert Response.status_code == 200
Assert len(response.json()) > 0, „Keine Beiträge gefunden“`
Erläuterung:
Fixture (api_client): Dieses Fixture richtet eine wiederverwendbare Sitzung für HTTP-Anfragen ein und stellt sicher, dass wir nicht jedes Mal eine neue Sitzung erstellen müssen.
Testfunktion (test_get_posts): Diese Funktion sendet eine GET-Anfrage an den /posts-Endpunkt und überprüft Folgendes:
Der Statuscode ist 200, was auf Erfolg hinweist.
Die Antwort enthält mindestens einen Beitrag.
Schritt 3: Führen Sie den Test durch
Um den Test auszuführen, führen Sie den folgenden Befehl aus:
bash
Code kopieren
pytest -v test_api.py
Warum das funktioniert
Der Test ist prägnant und wiederverwendbar und nutzt die Vorrichtungen von Pytest für den Auf- und Abbau.
Die Ausgabe von Pytest zeigt, welche Tests bestanden oder fehlgeschlagen sind, sodass die API-Zuverlässigkeit im Laufe der Zeit leicht verfolgt werden kann.
Beispiel 2: Automatisieren von Web-UI-Tests mit Pytest und Selenium
Web-UI-Tests stellen sicher, dass sich das Frontend einer Anwendung wie erwartet verhält. Pytest kann mit Selenium kombiniert werden, um diese Aufgaben effizient zu automatisieren.
Schritt 1: Erforderliche Bibliotheken installieren
Installieren Sie Pytest, Selenium und WebDriver Manager:
pip install pytest selenium webdriver-manager
Schritt 2: Schreiben Sie das Testskript
So können Sie einen einfachen Web-UI-Test automatisieren, der eine Suchfunktion bei Google überprüft:
`pytest importieren
aus Selenium Import Webdriver
from selenium.webdriver.common.by import By
aus selenium.webdriver.common.keys Schlüssel importieren
aus webdriver_manager.chrome ChromeDriverManager importieren
@pytest.fixture
def browser():
# Richten Sie den Chrome WebDriver ein
Driver = webdriver.Chrome(ChromeDriverManager().install())
Ertragstreiber
Driver.quit()
def test_google_search(browser):
# Navigieren Sie zu Google
browser.get("https://www.google.com")`{% endraw %}
# Find the search box and enter a query search_box = browser.find_element(By.NAME, "q") search_box.send_keys("Pytest Automation") search_box.send_keys(Keys.RETURN) # Assert that results are shown results = browser.find_elements(By.CSS_SELECTOR, "div.g") assert len(results) > 0, "No search results found"
Erläuterung:
Fixture (Browser): Dieses Fixture richtet eine Chrome WebDriver-Instanz mithilfe des Webdriver-Managers ein und stellt sicher, dass sie nach jedem Test ordnungsgemäß geschlossen wird.
Testfunktion (test_google_search): Diese Funktion:
Öffnet die Startseite von Google.
Sucht nach „Pytest Automation“.
Bestätigt, dass die Suche mindestens ein Ergebnis zurückgibt.
Schritt 3: Führen Sie den Test durch
Führen Sie den Test aus mit:
{% raw %}pytest -v test_ui.py
Warum das funktioniert
Das Fixture von Pytest verwaltet die Browserinstanz und macht den Testaufbau und -abbau sauber und effizient.
Mithilfe von Selenium interagiert das Skript wie ein echter Benutzer mit der Webseite und stellt so sicher, dass die Benutzeroberfläche wie erwartet funktioniert.
Beispiel 3: Automatisieren der Datenvalidierung mit Pytest und Pandas
Die Datenvalidierung ist in Datenentwicklungs-, Analyse- und ETL-Prozessen von entscheidender Bedeutung. Pytest kann Datenvalidierungsaufgaben mithilfe der Pandas-Bibliothek automatisieren.
Schritt 1: Erforderliche Bibliotheken installieren
Stellen Sie sicher, dass Pytest und Pandas installiert sind:
pip install pytest pandas
Schritt 2: Schreiben Sie das Testskript
Lassen Sie uns eine Aufgabe automatisieren, bei der wir überprüfen, ob ein Datensatz bestimmte Bedingungen erfüllt (z. B. keine Nullwerte, korrekte Datentypen usw.).
`pytest importieren
Pandas als pd
@pytest.fixture
def sample_data():
# Erstellen Sie einen Beispiel-DataFrame
Daten = {
„name“: [„Alice“, „Bob“, „Charlie“, „David“],
„Alter“: [25, 30, 35, 40],
„email“: [„[email protected]“, „[email protected]“, None, „[email protected]“]
}
df = pd.DataFrame(data)
gib df
def test_data_not_null(sample_data):
# Überprüfen Sie, ob im DataFrame
Nullwerte vorhanden sind.
Assert sample_data.isnull().sum().sum() == 0, „Daten enthalten Nullwerte“
def test_age_column_type(sample_data):
# Stellen Sie sicher, dass die Spalte „Alter“ vom Typ „Ganzzahl“ ist
Assert sample_data['age'].dtype == 'int64', „Altersspalte ist nicht vom Ganzzahltyp“`
Erläuterung:
Fixture (sample_data): Dieses Fixture richtet einen Beispiel-DataFrame ein und simuliert einen Datensatz, der in mehreren Tests wiederverwendet werden kann.
Testfunktion (test_data_not_null): Dieser Test prüft, ob im DataFrame Nullwerte vorhanden sind, und schlägt fehl, wenn welche gefunden werden.
Testfunktion (test_age_column_type): Dieser Test überprüft, ob die Altersspalte vom ganzzahligen Typ ist und stellt so die Datenkonsistenz sicher.
Schritt 3: Führen Sie den Test durch
Führen Sie den Test aus mit:
pytest -v test_data.py
Warum das funktioniert
Die Flexibilität von Pytest ermöglicht datenzentrierte Tests und stellt sicher, dass Datensätze die erwarteten Kriterien erfüllen.
Das Gerät erleichtert das Einrichten und Ändern von Testdaten, ohne dass Code dupliziert werden muss.
Best Practices zur Automatisierung von Aufgaben mit Pytest
Verwenden Sie Vorrichtungen für den Auf- und Abbau: Vorrichtungen helfen bei der effizienten Verwaltung des Auf- und Abbaus und machen Ihre Tests modular und wiederverwendbar.
Nutzen Sie Plugins: Pytest verfügt über eine Vielzahl von Plugins (z. B. pytest-html für HTML-Berichte, pytest-xdist für die parallele Ausführung), um Ihre Automatisierungsbemühungen zu verbessern.
Tests parametrisieren: Verwenden Sie @pytest.mark.parametrize, um mehrere Datensätze oder Eingaben zu testen und so die Codeduplizierung zu reduzieren.
Integration mit CI/CD-Pipelines: Integrieren Sie Pytest-Tests mit CI/CD-Tools wie Jenkins oder GitHub Actions für kontinuierliche Tests.
Abschluss
Pytest ist ein leistungsstarkes Tool zur Automatisierung einer Vielzahl von Aufgaben, von API- und Web-UI-Tests bis hin zur Datenvalidierung. Seine Einfachheit, kombiniert mit Flexibilität und umfassender Plugin-Unterstützung, machen es zu einer ausgezeichneten Wahl für Entwickler und Qualitätssicherungsingenieure gleichermaßen. Durch die Nutzung der Funktionen von Pytest wie Fixtures, Parametrisierung und Integrationen mit CI/CD-Pipelines können Sie robuste, wartbare und skalierbare Automatisierungs-Frameworks erstellen.
Wenn Sie Ihren Arbeitsablauf automatisieren oder Ihren Testprozess verbessern möchten, ist Pytest ein guter Ausgangspunkt. Viel Spaß beim Testen!
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3