01 | Einführung
Pytest ist ein sehr ausgereiftes Python-Testframework mit vollem Funktionsumfang, das hauptsächlich die folgenden Merkmale aufweist:
-
Einfach und flexibel, benutzerfreundlich, reich an Dokumentation
-
Unterstützt die Parametrisierung für eine differenzierte Kontrolle über Testfälle
-
Unterstützt einfache Unit-Tests und komplexe Funktionstests und kann auch für UI- und Schnittstellenautomatisierungstests wie Selenium, Appium und Requests verwendet werden
-
Unterstützt viele Plug-Ins von Drittanbietern und kann Erweiterungen anpassen (Pytest-Plug-In-Download-Adresse)
-
Unterstützt das Überspringen von Testfällen und die Wiederholung von Fehlern
-
Kann gut mit CI-Tools wie Jenkins integriert werden
02 Installation
pip install pytest
03 | Einfach zu bedienen
import pytest
def test01():
print('第一条用例')
assert True
def test02():
print("第二条用例")
assert False
if __name__=="__main__":
# -s:显示用例中的输出
# -v:输出更详细的用例执行信息
# __file__:本文件
pytest.main(["-s", "-v", __file__])
Das Ergebnis der Operation ist wie folgt:
04 | Initialisierung & Ende
4.1 Funktionsebene
Führen Sie die Initialisierungs- und Endmethode jedes Mal aus, wenn ein Testfall ausgeführt wird
import pytest
class Test:
def setup(self):
print("初始化")
def teardown(self):
print("结束")
def test01(self):
print('第一条用例')
assert True
def test02(self):
print("第二条用例")
assert False
if __name__=="__main__":
pytest.main(["-s",__file__])
Diagramm der Ausführungsergebnisse:
4.2 Klassenniveau
Unabhängig davon, wie viele Anwendungsfälle in der Klasse ausgeführt werden müssen, führen Sie die Initialisierungs- und Endmethode nur einmal aus
import pytest
class Test:
def setup_class(self):
print("初始化")
def teardown_class(self):
print("结束")
def test01(self):
print('第一条用例')
assert True
def test02(self):
print("第二条用例")
assert False
if __name__=="__main__":
pytest.main(["-s",__file__])
Diagramm der Ausführungsergebnisse:
05 | Gemeinsame Plugins
5.1 Prüfbericht
Installieren Sie das Testbericht-Plugin
pip install pytest-html
Erstellen Sie eine pytest.ini-Konfigurationsdatei im Projektverzeichnis und fügen Sie der Konfigurationsdatei einen Speicherpfad für Testberichte hinzu.
[pytest]
# 在当前目录下创建report目录存放测试报告
addopts = --html=./report/report.html
Führen Sie den Test aus. Der generierte Testbericht lautet wie folgt:
5.2 Bei Fehler erneut versuchen
PIugin installieren
pip install pytest-rerunfailures
Globale Wiederholung: Fügen Sie der Konfigurationsdatei Wiederholungsparameter hinzu, um die Wiederholungs- und Wiederholungswartezeit zu steuern, nachdem alle Anwendungsfälle fehlgeschlagen sind
[pytest]
addopts = --html=./report/report.html --reruns 3 --reruns-delay 2
# --reruns n,n是一个整数,表示重试次数
# --reruns-delay n,n是一个整数,表示重试等待时间,单位是s
Die Wiederholungsversuche fehlgeschlagener Anwendungsfälle sind im Testbericht ersichtlich
Einzelwiederholung: Fügen Sie einer Anwendungsfallfunktion einen Dekorator hinzu. Beachten Sie, dass die globale Wiederholungskonfiguration auskommentiert werden muss
# reruns指定重试次数,reruns_delay指定重试间隔
@pytest.mark.flaky(reruns=2, reruns_delay=1)
def test02(self):
print("第二条用例")
assert False
Sehen Sie sich die Wiederholungssituation im Testbericht an:
5.3 Gleichzeitige Ausführung mehrerer Prozesse
Das Aufkommen von pytest-xdist soll die verteilte Ausführung automatisierter Testfälle ermöglichen und dadurch automatisierte Testzeit sparen
PIugin installieren
pip install pytest-xdist
Parallele Ausführung mit mehreren CPUs
pytest -n 并行测试数量
5.4 Mehrfachbehauptungen
Bei der Verwendung von Pytest zur Beurteilung von Behauptungen werden Behauptungen aus Gründen der Genauigkeit von Anwendungsfällen häufig in mehreren Aspekten aufgestellt, z. B.:
-
Behauptung 1: Stellen Sie den Status der http-Antwort fest
-
Behauptung 2: Behaupten Sie den von der Antwort zurückgegebenen Codewert
-
Behauptung 3: Stellen Sie fest, ob das Datenfeld im von der Antwort zurückgegebenen JSON den Erwartungen entspricht.
Wenn Sie die Behauptung von nativem Python verwenden, werden Sie auf eine Situation stoßen, in der eine Behauptung fehlschlägt und alle fehlschlagen. Wenn beispielsweise das Ergebnis von Behauptung 1 „Fehlgeschlagen“ ist, werden weder Behauptung 2 noch Behauptung 3 ausgeführt. Wir hoffen, dass Behauptung 2 und Behauptung 3 weiterhin ausgeführt werden, sodass wir mehr Behauptungsergebnisse erhalten können, um festzustellen, wo ein Problem mit der Schnittstelle vorliegt, und das Problem besser lokalisieren können. Zu diesem Zeitpunkt können wir pytest-assume verwenden Plug-in, um dies zu erreichen.
PIugin installieren
pip install pytest-assume
Anwendungsfälle
import pytest
def test_add2():
pytest.assume(1 + 4 == 5)
pytest.assume(1 + 3 == 3)
pytest.assume(2 + 5 == 7)
pytest.assume(2 + 5 == 9)
print("测试完成")
if __name__=="__main__":
pytest.main(["-s", "-v", __file__])
Das Ausführungsergebnis ist in der folgenden Abbildung dargestellt. Es ist ersichtlich, dass insgesamt vier Behauptungen ausgeführt wurden, von denen zwei fehlgeschlagen sind
5.5 Verschönern Sie das Ausführungsergebnis
Wenn wir automatisierte Tests durchführen, gibt es oft Hunderte oder Tausende von Anwendungsfällen und die Ausführungszeit beträgt mehrere zehn Minuten oder Stunden. Wenn wir so viele Anwendungsfälle debuggen, wissen wir manchmal nicht, wie weit die Ausführung fortgeschritten ist, und das Pytest-Sugar-Plugin kann unsere Schwachstellen sehr gut lösen.
Installieren Sie das Pytest-Sugar-Plugin
pip install pytest-sugar
Führen Sie die Anwendungsfalldatei in der Befehlszeile aus. Das Ausführungsergebnis ist wie in der folgenden Abbildung dargestellt. Wenn der Anwendungsfall ausgeführt wird, wird ein Fortschrittsbalken angezeigt:
Wenn mein Blog für Sie hilfreich ist, wenn Ihnen mein Blog-Inhalt gefällt, klicken Sie bitte mit einem Klick auf „Gefällt mir“, „Kommentieren“ oder „Favoriten“!
Das Folgende sind unterstützende Lernmaterialien. Für Freunde, die [Softwaretests] durchführen, sollte es das umfassendste und vollständigste Vorbereitungslager sein. Dieses Lager hat mich auch auf der schwierigsten Reise begleitet. Ich hoffe, es kann Ihnen auch helfen!
Interview-Applet für Softwaretests
Die Datenbank mit Softwaretestfragen wurde von Millionen von Menschen ausgeschöpft! ! ! Wer weiß es! ! ! Das umfassendste Quiz-Miniprogramm im gesamten Netzwerk. Sie können die Quizfragen mit Ihrem Mobiltelefon durchführen, in der U-Bahn oder im Bus, loslegen!
Die folgenden Abschnitte mit Interviewfragen werden abgedeckt:
1. Grundlegende Theorie des Softwaretests, 2. Web-, App-, Schnittstellenfunktionstests, 3. Netzwerk, 4. Datenbank, 5. Linux
6. Web, App, Schnittstellenautomatisierung, 7. Leistungstests, 8. Programmiergrundlagen, 9. Fragen im Vorstellungsgespräch, 10. Offene Testfragen, 11. Sicherheitstests, 12. Computergrundlagen
Methode zur Informationsbeschaffung: