So verwenden Sie Allure zum Generieren von Testberichten in der Python-Automatisierung

Das Allure-Testberichts-Framework hilft Ihnen, auf einfache Weise eine Berichtspräsentation auf "hohem Niveau" zu erreichen. Dieser Artikel zeigt anhand von Beispielen, wie Sie das Allure-Testframework von 0 bis 1 integrieren. Es konzentriert sich darauf, wie Allure in ein bestehendes automatisiertes Testprojekt integriert und die Anzeige von Berichten optimiert werden kann. Allure ist sehr leistungsfähig und unterstützt mehrere
verwandte Themen: javapythonwww.cppcns.comnbsp; (Wenn die Homebrew-Version alt ist, andernfalls ist die installierte Allure-Version ebenfalls sehr alt. Sie müssen das Homebrew
Allure-Testbericht-Framework aktualisieren, damit Sie das einfacher realisieren können „High-Level“ Berichtsanzeige Dieser Artikel besteht Das Beispiel demonstriert die Integration des Allure-Testframeworks von 0 bis 1. Es konzentriert sich darauf, wie Allure in ein bestehendes automatisiertes Testprojekt integriert und die Anzeige von Berichten optimiert werden kann sehr leistungsfähig und unterstützt mehrere Sprachen und mehrere Testframeworks, egal ob Java/Python oder Junit/TestNG, der Implementierungsprozess anderer Sprachen oder Frameworks ist der gleiche wie in diesem Artikel, und die spezifische Konfiguration bezieht sich auf die Rahmenspezifikationen jeder Sprache

Installieren

Reiz installieren

Windows-Benutzer:

scoop install allure (Sie müssen Scoop zuerst herunterladen und installieren, diese Methode muss keine Umgebungsvariablen konfigurieren)
MAC-Benutzer:

Automatische Installation durch Homebrew
brew install allure &www.cppcns.comnbsp; (Wenn die Homebrew-Version alt ist, müssen Sie zuerst Homebrew aktualisieren, sonst ist die installierte allure-Version ebenfalls sehr alt und möglicherweise nicht mit dem Python-Plugin kompatibel)
Manuelle Installation:

Sie können es manuell von der offiziellen Website https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/ herunterladen
. Die neueste Version ist 2.13.6
How to use allure to generate test report in python Automatisierung

Entpacken und konfigurieren Sie die Umgebungsvariablen nach dem Herunterladen

Installieren Sie das allure-pytest-Plugin

pip installiere allure-pytest

Allure Gemeinsamkeiten

Wenn Sie Testfunktionen, Unterfunktionen oder Szenarien im Bericht sehen möchten, Testschritte, einschließlich Testzusatzinformationen, können Sie @feature, @story, @step, @attach verwenden

Schritt:

import allure
function plus @allure.feature("feature name")
sub-feature plus @allure.story("sub-feature name")
step plus @allure.step("step details")
@allure.attach("specific Text Informationen"), werden zusätzliche Informationen benötigt, das können Daten, Texte, Bilder, Videos, Webseiten sein.
Wenn Sie nur einige Funktionen testen, können Sie Einschränkungen und Filter hinzufügen:
pytest Dateiname --allure-features "Der Name der Funktion, die ausgeführt werden muss"

Allure Feature – Feature/Story

@allure.feature vs. @allure.store

Ein Feature entspricht einer Funktion, einem großen Modul, das den Fall in ein Feature einordnet und im Verhalten im Bericht anzeigt, was einer Testsuite
-Story entspricht, die verschiedenen Szenarien unter dieser Funktion oder diesem Modul entspricht, und eine Verzweigungsfunktion, die zum Feature gehört Die Struktur des Berichts wird in den Features angezeigt, was dem Testfall-
Feature und der Story ähnlich dem Parent-Child-Relation
-Step-Feature entspricht

Jeder Schritt im Testprozess ist im Allgemeinen in einer bestimmten Logikmethode platziert,
kann aber in Schlüsselschritten platziert werden, die im Bericht in
der App angezeigt werden, automatisierter Webtest. Es wird empfohlen, als Schritt zu einer neuen Seite zu wechseln
Verwendung:
@ allure.step() kann nur in Form eines Dekorators
mit allure.step() auf einer Klasse oder Methode platziert werden: Es kann in einer Testfallmethode platziert werden, aber der Code des Testschritts muss in der enthalten sein Anweisung zum
Ausführen:

Sammeln Sie Ergebnisse während der Testausführung von www.cppcns.com

pytest [Testdatei] -s -q --alluredir=./result --clean-alluredir

--alluredir Diese Option wird verwendet, um den Pfad zum Speichern der Testergebnisse
anzugeben --clean-alluredir Diese Option wird verwendet, um die zuvor generierten Ergebnisse zu löschen Testbericht anzeigen
:

Methode 1: Sehen Sie sich den aktuellen Bericht nach Abschluss des Tests an, sehen Sie sich den Bericht online an und öffnen Sie direkt den Standardbrowser, um den aktuellen Bericht anzuzeigen

Reiz dienen ./Ergebnis

Methode 2: Generieren Sie einen Bericht aus dem Ergebnis, bei dem es sich um einen Dienst handelt, der Tomcat startet, was zwei Schritte erfordert

Bericht generieren:

allure generate ./result -o ./report --clean (Hinweis: --clean wird verwendet, um zuvor generierte Berichte zu löschen)

Öffnen Sie den Bericht:

allure open -h 127.0.0.1 -p 8883 ./report (diese Methode generiert direkt einen Tomcat-Dienst, auf den remote zugegriffen werden kann)

zum Beispiel:

Es gibt die folgenden Codedateien

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author:chenshifeng
@file:test_allure.py
@time:2020/10/10
"""
import allure
import pytest


@allure.feature('登录模块')
class TestLogin():
    @allure.story('登录成功')
    @allure.title('登录成功标题')
    def test_login_sucess(self):
        with allure.step('步骤1:打开应用'):
            print('应用已打开')
        with allure.step('步骤2:进入登录页面'):
            print('登录页面已打开')
        with allure.step('步骤3:输入用户名和密码'):
            print('用户名和密码输入成功')
        print('登录测试用例:登录成功')

    @allure.story('登录成功')
    def test_login_sucess2(self):
        assert '1' == 1
        print('登录测试用例:登录成功')

    @allure.story('登录失败')
    def test_login_failure_a(self):
        print('登录测试用例:登录失败,用户名缺失')

    @allure.story('登录失败')
    def test_login_failure_b(self):
        print('登录测试用例:登录失败,密码缺失')

    @allure.story('登录失败')
    def test_login_failure_c(self):
        with allure.step('输入用户名'):
            print('已输入用户名')
        with allure.step('输入密码'):
            print('已输入密码')
        with allure.step('点击登录'):
            print('已点击登录')
        print('登录测试用例:登录失败,密码错误')


@allure.feature('搜索模块')
class TestSearch():
    def test_search1(self):
        print('搜索用例1')

    TEST_CASE_LINK = 'https://mirrors.huaweicloud.com/'
    @allure.testcase(TEST_CASE_LINK,'测试用例连接')
    def test_search2(self):
        print('搜索用例2')
    @allure.step('搜索步骤')
    def test_search3(self):
        print('搜索用例3')

Führen Sie die Befehle nacheinander aus:

pytest test_allure.py --alluredir=./result --clean-alluredir

Reiz dienen ./Ergebnis

chenshifengdeMacBook-Pro:testcode chenshifeng$ pytest test_allure.py --alluredir=./result --clean-alluredir
============================================================================= test session starts =============================================================================
platform darwin -- Python 3.9.0, pytest-6.1.1, py-1.9.0, pluggy-0.13.1
rootdir: /Users/chenshifeng/MyCode/PythonCode/SFDSZL/test_pytest, configfile: pytest.ini
plugins: allure-pytest-2.8.18
collected 8 items                                                                                                                                                             

test_allure.py .F......                                                                                                                                                 [100%]

================================================================================== FAILURES ===================================================================================
________________________________________________________________________ TestLogin.test_login_sucess2 _________________________________________________________________________

self = <test_allure.TestLogin object at 0x7fef3d5cba90>

    @allure.story('登录成功')
    def test_login_sucess2(self):
>       assert '1' == 1
E       AssertionError: assert '1' == 1

test_allure.py:27: AssertionError
=========================================================================== short test summary info ===========================================================================
FAILED test_allure.py::TestLogin::test_login_sucess2 - AssertionError: assert '1' == 1
========================================================================= 1 failed, 7 passed in 0.07s =========================================================================
chenshifengdeMacBook-Pro:testcode chenshifeng$ allure serve ./result 
Generating report to temp directory...
Report successfully generated to /var/folders/p0/3_7fwrvx6n3ftpfd4wjb01300000gn/T/7024790777193223986/allure-report
Starting web server...
2020-10-13 21:39:56.174:INFO::main: Logging initialized @6818ms to org.eclipse.jetty.util.log.StdErrLog
Server started at <http://192.168.12.100:58977/>. Press <Ctrl+C> to exit

Generierter Bericht:

So verwenden Sie Allure zum Generieren von Testberichten in der Python-Automatisierung

Allure-Feature-Testcase

Zugehörige Testfälle (Sie können direkt auf die Adresse des Testfalls verlinken)

Beispiel:

TEST_CASE_LINK = 'https://mirrors.huaweicloud.com/'
@allure.testcase(TEST_CASE_LINK,'测试用例连接')
def test_search(self):
    print('搜索用例')

So verwenden Sie Allure zum Generieren von Testberichten in der Python-Automatisierung

Scope-Tests nach Wichtigkeitsstufe

Normalerweise umfassen die Tests P0, Rauchtest und Online-Verifizierungstest. Je nach Wichtigkeit ausgeführt, sollen zum Beispiel der Hauptprozess und wichtige Module beim Onlinegehen einmal durchlaufen werden, was durch die folgenden Methoden gelöst werden kann

Durch Anhängen des Tags @pytest.mark

über allure.feature, allure.story

Sie können Tags auch über allure.severity anhängen

Level:
trivial: nicht wichtig, geringfügiger Fehler (muss ohne Aufforderung eingegeben werden, oder Aufforderung ist unregelmäßig)
geringfügig nicht sehr wichtig, geringfügiger Fehler (Schnittstellenfehler entspricht nicht den UI-Anforderungen)
normal: normales Problem, häufiger Fehler (numerischer Berechnungsfehler)
kritisch : Schwerwiegender, kritischer Defekt (fehlender Funktionspunkt)
Blocker: Blockierung, Unterbrechungsdefekt (das Client-Programm antwortet nicht und kann die nächste Operation nicht ausführen)
Verwendung:

Fügen Sie @allure.severity(allure.severity_level.TRIVIAL) über Methoden, Funktionen und Klassen hinzu

implementieren:

pytest -s -v Dateiname --allure-severities normal,kritisch

zum Beispiel:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author:chenshifeng
@file:test_severity.py
@time:2020/10/11
"""
import allure
import pytest


# 不加任何标记,默认normal
def test_with_no_severity():
    pass


# trivial:不重要,轻微缺陷(必输项无提示,或者提示不规范)
@allure.severity(allure.severity_level.TRIVIAL)
def test_with_trivial_severity():
    pass


# minor 级别 不太重要,次要缺陷(界面错误与UI需求不符)
@allure.severity(allure.severity_level.MINOR)
def test_with_minor_severity():
    pass


# normal:正常问题,普通缺陷(数值计算错误)
@allure.severity(allure.severity_level.NORMAL)
def test_with_normal_severity():
    pass


# critical:严重,临界缺陷(功能点缺失)
@allure.severity(allure.severity_level.CRITICAL)
def test_with_ritical_severity():
    pass


# blocker:阻塞,中断缺陷(客户端程序无响应,无法执行下一步操作)
@allure.severity(allure.severity_level.BLOCKER)
def test_with_blocker_severity():
    pass


@allure.severity(allure.severity_level.NORMAL)
class TestClassWithNormalSeverity(object):

    # 不加任何标记,默认为同class级别
    def test_inside_with_normal_severity(self):
        pass

    # 重新设置了critical级别
    @allure.severity(allure.severity_level.CRITICAL)
    def test_inside_with_critical_severity(self):
        pass

implementieren:

chenshifengdeMacBook-Pro:testcode chenshifeng$ pytest test_severity.py --alluredir=./result --clean-alluredir -vs
============================================================================= test session starts =============================================================================
platform darwin -- Python 3.9.0, pytest-6.1.1, py-1.9.0, pluggy-0.13.1 -- /usr/local/bin/python3.9
cachedir: .pytest_cache
rootdir: /Users/chenshifeng/MyCode/PythonCode/SFDSZL/test_pytest, configfile: pytest.ini
plugins: allure-pytest-2.8.18
collected 8 items                                                                                                                                                             

test_severity.py::test_with_no_severity PASSED
test_severity.py::test_with_trivial_severity PASSED
test_severity.py::test_with_minor_severity PASSED
test_severity.py::test_with_normhttp://www.cppcns.comal_severity PASSED
test_severity.py::test_with_ritical_severity PASSED
test_severity.py::test_with_blocker_severity PASSED
test_severity.py::TestClassWithNormalSeverity::test_inside_with_normal_severity PASSED
test_severity.py::TestClassWithNormalSeverity::test_inside_with_critical_severity PASSED

============================================================================== 8 passed in 0.03s ========================================================================www.cppcns.com======
chenshifengdeMacBook-Pro:testcode chenshifeng$ allure serve ./result 
Generating report to temp directory...
Report successfully generated to /var/folders/p0/3_7fwrvx6n3ftpfd4wjb01300000gn/T/17788207943997663035/allure-report
Starting web server...
2020-10-13 22:27:49.842:INFO::main: Logging initialized @6620ms to org.eclipse.jetty.util.log.StdErrLog
Server started at <http://192.168.12.100:59696/>. Press <Ctrl+C> to exit
python自动化之如何利用allure生成测试报告

Ultimativer Anwendungsfall:
Baidu-Suche:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author:chenshifeng
@file:test_baidudemo.py
@time:2020/10/13
"""
import pytest
import allure
from selenium import webdriver
import time

@allure.testcase('https://www.github.com')
@allure.feature("百度搜索")
@pytest.mark.parametrize('test_data1',['allure','pytest','unittest'])
def test_steps_demo(test_data1):
    with allure.step('打开百度网页'):
        driver=webdriver.Chrome()
        driver.get('http://www.baidu.com')
        driver.maximize_window()
    with allure.step(f'输入搜索词:{test_data1}'):
        driver.find_element_by_id('kw').send_keys(test_data1)
        time.sl编程客栈eep(2)
        driver.find_element_by_id('su').click()
        time.sleep(2)
    with allure.step('保存图片'):
        driver.save_screenshot('./screenshot/baidu.png')
        allure.attach.file('./screenshot/baidu.png',attachment_type=allure.attachment_type.PNG)
    with allure.step('关闭浏览器'):
        driver.quit()

implementieren:

chenshifengdeMacBook-Pro:testcode chenshifeng$ pytest test_baidudemo.py --alluredir=./result --clean-alluredir -vs
============================================================================= test session starts =============================================================================
platform darwin -- Python 3.9.0, pytest-6.1.1, py-1.9.0, pluggy-0.13.1 -- /usr/local/bin/python3.9
cachedir: .pytest_cache
rootdir: /Users/chenshifeng/MyCode/PythonCode/SFDSZL/test_pytest, configfile: pytest.ini
plugins: allure-pytest-2.8.18
collected 3 items                                                                                                                                                             

test_baidudemo.py::test_steps_demo[allure] PASSED
test_baidudemo.py::test_steps_demo[pytest] PASSED
test_baidudemo.py::test_steps_demo[unittest] PASSED

============================================================================= 3 passed in 24.65s ==============================================================================
chenshifengdeMacBook-Pro:testcode chenshifeng$ allure serve ./result 
Generating report to temp directory...
Report successfully generated to /var/folders/p0/3_7fwrvx6n3ftpfd4wjb01300000gn/T/18005664130273264423/allure-report
Starting web server...
2020-10-13 23:03:39.221:INFO::main: Logging initialized @7360ms to org.eclipse.jetty.util.log.StdErrLog
Server started at <http://192.168.12.100:60775/>. Press <Ctrl+C> to exit

Ermutigung: [Tutorials, die Ihnen helfen können]

Diese Materialien sollten das umfassendste und vollständigste Vorbereitungslager für Freunde sein, die [Softwaretests] betreiben. Dieses Lager hat mich auch auf der schwierigsten Reise begleitet. Ich hoffe, es kann auch Ihnen helfen! Gerade in der Technologiebranche soll alles so früh wie möglich gemacht und die technische Basis verbessert werden.

Folgen Sie meinem öffentlichen WeChat-Konto [Program Yuanmuzi], um es kostenlos zu erhalten~
Bildbeschreibung hier einfügen

Wenn du keinen Berg erklimmst, weißt du nicht, wie hoch der Himmel ist. Das Warten wird dich nur verfehlen, und der Kampf wird erfolgreich sein.

Bildbeschreibung hier einfügen

Meine Lerngruppe: 644956177 Es gibt technische Experten in der Gruppe zum Kommunizieren und Teilen~

Ich denke du magst

Origin blog.csdn.net/Xsk215/article/details/117163066
Empfohlen
Rangfolge