Automatisierte Tests – Pytest-Testframework

01 | Einführung

Pytest ist ein sehr ausgereiftes Python-Testframework mit vollem Funktionsumfang, das hauptsächlich die folgenden Merkmale aufweist:

  1. Einfach und flexibel, benutzerfreundlich, reich an Dokumentation

  2. Unterstützt die Parametrisierung für eine differenzierte Kontrolle über Testfälle

  3. Unterstützt einfache Unit-Tests und komplexe Funktionstests und kann auch für UI- und Schnittstellenautomatisierungstests wie Selenium, Appium und Requests verwendet werden

  4. Unterstützt viele Plug-Ins von Drittanbietern und kann Erweiterungen anpassen (Pytest-Plug-In-Download-Adresse)

  5. Unterstützt das Überspringen von Testfällen und die Wiederholung von Fehlern

  6. 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:

Supongo que te gusta

Origin blog.csdn.net/myh919/article/details/132041453
Recomendado
Clasificación