In den ersten drei Kapiteln haben Sie das Schreiben von Anwendungsfällen, die Vor- und Nachverarbeitungsmethoden, die Markierung von Anwendungsfällen und andere Methoden von Pytest kennengelernt. In diesem Kapitel wird hauptsächlich vorgestellt, wie Pytest Testberichte integriert. Pytest selbst verfügt nicht über die Funktion zum Generieren von Testberichten, es gibt jedoch viele Plug-Ins in Pytest, mit denen wir Testberichte erstellen können. Im Folgenden stellen wir zwei Möglichkeiten zum Erstellen von Berichten vor. Eine besteht darin, HTML-Berichte zu generieren, und die andere darin, die Allure-Berichtsplattform zu integrieren, um Testberichte anzuzeigen.
1. HTML-Bericht generieren
Es gibt viele Plug-Ins für Pytest zum Generieren von HTML, z. B. Pytest-HTML, Pytest-Testreport usw. Hier werde ich vorstellen, wie Sie das Pytest-Testreport-Plug-In zum Generieren von HTML-Testberichten verwenden.
1.1. Plug-in installieren
pip install pytest-testreport
Hinweis: Wenn Sie das pytest-html-Plugin installiert haben, deinstallieren Sie es bitte zuerst, da es sonst zu Konflikten kommen kann.
1.2. Einführung in die Verwendung von Plug-Ins
Wenn Sie pytest zum Ausführen von Tests verwenden und pytest-testreport zum Generieren eines Testberichts verwenden möchten, fügen Sie den Parameter --report hinzu, um beim Ausführen des Tests den Namen der Berichtsdatei anzugeben.
Weitere Betriebsparameter:
--title: Geben Sie den Berichtstitel an
--tester: Geben Sie den Tester im Bericht an
--desc: Geben Sie die Elementbeschreibung im Bericht an
--template: Geben Sie den Berichtsvorlagenstil an (1 oder 2).
- Befehlszeilenausführung:
pytest --report=musen.html --title=测试报告 --tester=月下 --desc=项目描述 --template=2
- Verwenden Sie pytest.main, um den Code auszuführen
import pytest
pytest.main(['--report=musen.html',
'--title=上课报告',
'--tester=测试员',
'--desc=报告描述信息',
'--template=2'])
Das generierte Berichtsformat ist wie folgt
Stil eins
Stil 2
Dies ist die Einführung in die Berichtserstellung im HTML-Format. Als Nächstes erkläre ich Ihnen, wie Sie den Allure-Bericht integrieren.
2. Integrieren Sie den Allure-Bericht
Wenn Sie Allure-Berichte in Pytest integrieren möchten, müssen Sie zunächst Allure herunterladen und die Umgebung konfigurieren
2.1, Allure-Umgebungskonfiguration
1. Allure herunterladen: Adresse:
https://github.com/allure-framework/allure2/releases
Nach dem Herunterladen und Entpacken
2. Konfiguration der Umgebungsvariablen
Fügen Sie den Bin-Verzeichnispfad des Allure-Pfads nach der Dekomprimierung von Allure in die Umgebungsvariable ein
3. Installieren Sie das Pytest-Plugin von Allure
pip install allure-pytest
2.2. Erstellen Sie einen Allure-Bericht
Nach der Installation und Konfiguration der Allure-Umgebung können Sie bei Verwendung von Pytest zum Ausführen des Anwendungsfalls angeben, dass Allure-Berichte über die Parameter des Allure-Plug-Ins generiert werden sollen.
Betriebsparameter:
--alluredir: Geben Sie den Pfad an, in dem Allure-Berichte gespeichert werden
- Von der Befehlszeile ausführen
pytest --alluredir=reports
- Verwenden Sie pytest.main, um den Code auszuführen
import pytest
pytest.main(['--alluredir=reports'])
2.3. Starten Sie den Allure-Dienst
Geben Sie den folgenden Befehl in das Befehlsterminal ein, um den Allure-Dienst zu starten
# 命令:allure serve 生成的报告路径
allure serve reports
Führen Sie den obigen Befehl aus. Nachdem der Allure-Dienst gestartet wurde, wird der Browser automatisch geöffnet und die Allure-Service-Seite angezeigt.
2.4. Allure verfügt über integrierte, häufig verwendete Methoden.
Fehler-Screenshot hinzufügen
- allure.title
def error_save_screenshot(driver,file_path, desc):
# 对当前页web页面进行截图
driver.save_screenshot(file_path)
# 将截图保存到allure报告中
with open(file_path, "rb") as f:
file = f.read()
allure.attach(file, "失败截图", allure.attachment_type.PNG)
Fügen Sie dem Bericht einen Anwendungsfallnamen hinzu
- allure.title import allure class TestLogin: @allure.title('登录用例') def test_login(self): bestanden
Legen Sie den Anwendungsfallnamen in parametrisierten Anwendungsfällen dynamisch fest
- allure.dynamic.title # Anwendungsfalldaten casedatas = [ {'title': 'Umgekehrter Anwendungsfall 1','data':"xxx"}, {'title': 'Umgekehrter Anwendungsfall 2','data':" xxx "}, {'title': 'Reverse Use Case 3','data':"xxx"} ] class TestLogin: @pytest.mark.parametrize('item',casedatas ) def test_demo(self, item): # Dynamisch Legen Sie den Anwendungsfallnamen im Bericht fest: allure.dynamic.title(item['title'])
Fügen Sie Funktionsbeschreibungen in Berichten hinzu
- allure.story
@allure.story('登录功能')
class TestLogin:
@allure.title('登录用例')
def test_login(self):
pass
Paketnamen im Bericht hinzufügen
- allure.suite
@allure.suite('登录测试套件')
class TestLogin:
@allure.title('登录用例')
def test_login(self):
pass
Die Funktion von pytest zum Generieren von Testberichten wurde hier erweitert!