Beschreibung der Pytest-Laufzeitparameter, detaillierte Erklärung von Pytest, detaillierte Erklärung von Pytest.ini

1. Einführung in Pytest

1.pytest ist ein sehr ausgereiftes Python-Testframework mit vollem Funktionsumfang und den folgenden Hauptfunktionen:

Einfach und flexibel, benutzerfreundlich, unterstützt Parametrisierung
2. Es kann einfache Komponententests und komplexe Funktionstests unterstützen und kann auch für automatisierte Tests wie Selenium und Appium verwendet werden. Anfragen + Pytest-Schnittstelle für automatisiertes Testen 3. Pytest verfügt über viele
Drittanbieter Party-Plug-Ins. Und Sie können Erweiterungen anpassen. Die nützlicheren sind:
pytest-selenium (integriertes Selenium),
pytest-html (perfekte HTML-Testberichtserstellung),
pytest-rerunfailures (wiederholte Ausführung fehlgeschlagener Testfälle),
pytest-xdist (multi -CPU-Verteilung)
4. Testfälle Skip- und Xfail-Verarbeitung
5. Kann gut in Jenkins integriert werden
6. Pytest unterstützt auch Allure-Testberichte
7. Es ist kompatibel mit Unittest und ist eine Erweiterung von Unittest

2. Pytest und allgemeine Plug-in-Installation

Schreiben Sie den folgenden Inhalt in eine TXT-Datei, z. B. require-install.txt
pytest
pytest-html
pytest-xdist
pytest-rerunfailures

Verwenden Sie dann diesen Befehl im DOS-Fenster, um alle Module zu installieren: pip install -r require-install.txt
Überprüfen Sie die Installationsergebnisse mit dem Befehl: pytest --version. Wenn der folgende Fehler gemeldet wird, müssen Sie die Version von Python oder Pytest anpassen. Dies liegt daran, dass die Versionen von Python und Pytest nicht kompatibel sind:Fügen Sie hier eine Bildbeschreibung ein

Hier sind zwei Fehlerbeispiele. Eines ist Win7, Python3.7.4 und Pytest5.0+. Es ist in Ordnung, wenn Sie Python auf 3.7.3 herunterstufen. Das andere ist Windows 10, Python 3.8.1, Pytest 5.3.3. Downgrade von Pytest . Es ist auch für Versionen unter 4.6.9 in Ordnung, daher wird empfohlen, zum Ausprobieren entweder ein Downgrade der Python-Version oder der Pytest-Version durchzuführen.
Der Autor verwendet: win7 + python3.7.3 + pytest5.4.1, und es gibt kein Problem beim persönlichen Testen.

3. Grundlegende Anwendung des Pytest-Frameworks

  1. Die Situation, wenn Pytest die Funktion und die Methoden in der laufenden Klasse ausführt, ist wie folgt:
importpytestdeftest01():print('测试用例一')defabcd():print('测试用例二')classTestCase:deftest_03(self):print('测试用例三')defdefg(self):print('测试用例四')if__name__=='__main__':pytest.main(['-s','pytest-demo.py'])

Die Laufergebnisse sind wie folgt:

Fügen Sie hier eine Bildbeschreibung ein

Hinweise:
(1) Testfunktionen und Testmethoden in Klassen müssen mit test_ beginnen. Natürlich kann der Anfang in Pytest angepasst werden.
(2) Die Testklasse muss mit „Test“ beginnen und darf keine Init-Methode haben.
(3) Die Behauptung muss „assertion“ verwenden.
Ausführungsmethode:
(1) Im Hauptfunktionsmodus ausführen:
Geben Sie die laufende Datei an: pytest.main(['-s ',' pytest-demo.py-Modulname'])
Hinweis: Wenn die py-Datei mit test_ beginnt oder mit _test endet, können Sie sie mit pytest.main() ausführen. Weil pytest.main() alle Dateien im aktuellen Verzeichnis ausführt, die mit test_ beginnen oder mit _test enden.
(2) Im Befehlszeilenmodus ausführen.
Klicken Sie auf: Terminal in der unteren linken Ecke von Pycharm, um das Befehlszeilenfenster im aktuellen Verzeichnis zu öffnen.
Geben Sie die Befehlsausführung ein: pytest pytest-demo.py Modulname
Hinweis: Wenn die py-Datei mit test_ beginnt oder mit _test endet, können Sie zum Ausführen den Befehl pytest verwenden, da pytest alle Dateien im aktuellen Verzeichnis ausführt, die mit test_ beginnen oder mit _test file am Ende enden.

4. Beschreibung der Laufzeitparameter

-s: Zeigt den Druckinhalt an.
Beispiel: pytest pytest-demo.py -s
entspricht: pytest.main(['-s','pytest-demo.py'])

::: Geben Sie die laufende Funktion des Testfalls an
: z. B.: pytest pytest-demo.py::test_01
entspricht: pytest.main(['-s','pytest-demo.py::test01'])
laufende Klasse Methode: Zum Beispiel: pytest pytest-demp.py::TestCase::test_03
entspricht: pytest.main(['-s', 'pytest-demo.py::TestCase::test_03'])
–html=path / report.html: Generieren Sie einen Testbericht im XML/HTML-Format (pytest-html muss zuerst installiert werden),
wie zum Beispiel: pytest pytest-demp.py --html-./report.html
entspricht: pytest.main( ['-s', 'pytest-demo.py','–html=./report.html'])
–maxfail=1: Beende den Test, wenn ein Fehler auftritt.
Beispiel: pytest pytest-demo.py –maxfail =1
entspricht: pytest .main(['-s','pytest-demo.py','–maxfail=1'])
-n: pytest-xdist Multithread-Betrieb (pytest-xdist muss installiert sein zuerst)
wie: pytest pytest-demo.py -n 2
ist äquivalent zu: pytest.main(['-s','pytest-demo.py','-n=2']).
Verwenden Sie time.sleep( 2) Plus-Wartezeittest im Anwendungsfall und festgestellt, dass viele Thread-Zeiten reduziert werden.
–reruns NUM: Versuchen Sie erneut, den Testfall auszuführen (pytest-rerunfailures muss zuerst installiert werden),
z. B.: pytest pytest-demo.py --reruns 2.
Sobald der Anwendungsfall fehlschlägt, wird er zweimal ausgeführt. Es scheint, dass dies der Fall ist kann nicht mit main ausgeführt werden.

Daraus ist ersichtlich: pytest.main(['-s','pytest-demo.py module name']), die Hauptmethode wird in einem Listenformat übergeben, und in der Liste können mehrere Parameter übergeben werden.

5. Pytest-INI-Konfigurationsdatei

Die Datei pytest.ini ist die Hauptkonfigurationsdatei von pytest und kann das Standardverhalten von pytest ändern.

1. Der Platzierungsort von pytest.ini: Im Allgemeinen im Stammverzeichnis des Projekts platziert (d. h. im Ordner der obersten Ebene des aktuellen Projekts) 2. Die
Rolle von pytest.ini: Geben Sie den Ausführungsmodus von pytest an ( Nachdem Sie pytest in cmd eingegeben haben, werden die Konfigurationsinformationen in pytest.ini gelesen und auf die angegebene Weise ausgeführt.
3. Verwenden Sie den Befehl pytest -h unter cmd, um die Einstellungsoptionen von pytest.ini anzuzeigen (die folgenden Screenshots sind nur einige davon). Die Optionen).
Häufig verwendete Einstellungsoptionen sind wie folgt:
[pytest]
addopts = -s ... #Sie können mehrere Befehlszeilenparameter hinzufügen, getrennt durch Leerzeichen
testpaths = .../pytestproject #Testfallordner, Sie können ihn konfigurieren Sie selbst, .../pytestproject ist der Pytestproject-Ordner der oberen Ebene.
python_files = test*.py #Konfigurieren Sie den Moduldateinamen für die Testsuche.
python_classes = Test* #Konfigurieren Sie den Testklassennamen für die Testsuche.
python_funtions = test #Konfigurieren Sie den Testfunktionsnamen für die Testsuche

Beispiele sind wie folgt:
[pytest]
addopts = -s --html=./report.html
testpaths = …/pytestproject
python_files = test*.py
python_classes = Test*
python_funtions = test*

Hinweis:
1. Lesen Sie die Konfigurationsdatei beim Ausführen automatisch und führen Sie alle Moduldateien aus, beginnend mit test unter pytestproject.

Abschließend möchte ich mich bei allen bedanken, die meinen Artikel sorgfältig gelesen haben. Gegenseitigkeit ist immer notwendig. Obwohl es keine sehr wertvolle Sache ist, können Sie es direkt verwenden, wenn Sie es verwenden können:

Fügen Sie hier eine Bildbeschreibung ein

Diese Informationen sollten das umfassendste und vollständigste Vorbereitungslager für Freunde von [Softwaretests] sein. Dieses Lager hat auch Zehntausende von Testingenieuren auf der schwierigsten Reise begleitet. Ich hoffe, es kann Ihnen auch helfen!

Supongo que te gusta

Origin blog.csdn.net/NHB456789/article/details/132759334
Recomendado
Clasificación