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, die die Wiederverwendbarkeit verbessern.
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 Pytest und die Anforderungsbibliothek installiert sind:
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“`
Erklärung:
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 und zeigt einen Erfolg an.
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
von Selenium Import Webdriver
von 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
drivers.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"
Erklärung:
Fixture (Browser): Dieses Fixture richtet mithilfe des Webdriver-Managers eine Chrome WebDriver-Instanz 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
이것이 효과적인 이유
Pytest의 픽스처는 브라우저 인스턴스를 관리하여 테스트 설정 및 해제를 깔끔하고 효율적으로 만듭니다.
Selenium을 사용하면 스크립트가 실제 사용자처럼 웹페이지와 상호작용하여 UI가 예상대로 작동하도록 보장합니다.
예 3: Pytest 및 Pandas를 사용한 데이터 검증 자동화
데이터 검증은 데이터 엔지니어링, 분석, ETL 프로세스에서 매우 중요합니다. Pytest는 Pandas 라이브러리를 사용하여 데이터 검증 작업을 자동화할 수 있습니다.
1단계: 필수 라이브러리 설치
Pytest와 Pandas가 설치되어 있는지 확인하세요.
pip 설치 pytest pandas
2단계: 테스트 스크립트 작성
데이터 세트가 특정 조건(예: Null 값 없음, 올바른 데이터 유형 등)을 충족하는지 확인하는 작업을 자동화해 보겠습니다.
`pytest 가져오기
팬더를 PD로 가져오기
@pytest.fixture
def 샘플_데이터():
# 샘플 DataFrame 생성
데이터 = {
"이름": ["앨리스", "밥", "찰리", "데이비드"],
"나이": [25, 30, 35, 40],
"email": ["alice@example.com", "bob@example.com", 없음, "david@example.com"]
}
df = pd.DataFrame(데이터)
DF 반환
def test_data_not_null(샘플_데이터):
# DataFrame에 null 값이 있는지 확인
Assert Sample_data.isnull().sum().sum() == 0, "데이터에 Null 값이 포함되어 있습니다."
def test_age_column_type(샘플_데이터):
# 'age' 열이 정수형인지 확인하세요
Assert Sample_data['age'].dtype == 'int64', "Age 열이 정수 유형이 아닙니다."`
설명:
Fixture(sample_data): 이 Fixture는 샘플 DataFrame을 설정하여 여러 테스트에서 재사용할 수 있는 데이터 세트를 시뮬레이션합니다.
테스트 함수(test_data_not_null): 이 테스트는 DataFrame에 null 값이 있는지 확인하고 발견되면 실패합니다.
테스트 함수(test_age_column_type): age 열이 정수형인지 확인하여 데이터 일관성을 보장하는 테스트입니다.
3단계: 테스트 실행
다음을 사용하여 테스트를 실행하세요.
pytest -v test_data.py
이것이 효과적인 이유
Pytest의 유연성 덕분에 데이터 중심 테스트가 가능해 데이터 세트가 예상 기준을 충족하는지 확인할 수 있습니다.
이 픽스처를 사용하면 코드를 복제하지 않고도 테스트 데이터를 쉽게 설정하고 수정할 수 있습니다.
Pytest를 사용한 작업 자동화 모범 사례
설정 및 해제를 위한 픽스처 사용: 픽스처는 설정 및 해제를 효율적으로 관리하여 테스트를 모듈화하고 재사용할 수 있도록 해줍니다.
플러그인 활용: Pytest에는 자동화 작업을 향상시키는 다양한 플러그인(예: HTML 보고서용 pytest-html, 병렬 실행용 pytest-xdist)이 있습니다.
매개변수화 테스트: @pytest.mark.parametrize를 사용하여 여러 데이터 또는 입력 세트를 테스트하여 코드 중복을 줄입니다.
CI/CD 파이프라인과 통합: 지속적인 테스트를 위해 Jenkins 또는 GitHub Actions와 같은 CI/CD 도구와 Pytest 테스트를 통합합니다.
결론
Pytest는 API 및 웹 UI 테스트부터 데이터 검증에 이르기까지 다양한 작업을 자동화하는 강력한 도구입니다. 유연성과 광범위한 플러그인 지원이 결합된 단순성은 개발자와 QA 엔지니어 모두에게 탁월한 선택입니다. 픽스처, 매개변수화, CI/CD 파이프라인과의 통합 등 Pytest의 기능을 활용하면 강력하고 유지 관리 및 확장 가능한 자동화 프레임워크를 구축할 수 있습니다.
워크플로를 자동화하거나 테스트 프로세스를 향상하려는 경우 Pytest가 훌륭한 출발점입니다. 즐거운 테스트 되세요!
위 내용은 Pytest를 사용하여 작업 자동화: 예제가 포함된 실용적인 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!