Cómo usar allure para generar informes de prueba en la automatización de python

El marco de informes de prueba de Allure lo ayuda a lograr fácilmente una presentación de informes de "alto nivel". Este artículo demuestra cómo integrar el marco de prueba Allure de 0 a 1 con ejemplos. Se centra en cómo integrar Allure en un proyecto de prueba automatizado existente y cómo optimizar la visualización de informes. Allure es muy potente y es compatible con varios
temas relacionados: javapythonwww.cppcns.comnbsp; (si la versión de Homebrew es antigua, de lo contrario, la versión allure instalada también es muy antigua. Debe actualizar el
marco de informes de prueba de Homebrew Allure para ayudarlo a realizar fácilmente el visualización de informes de "alto nivel". Este artículo aprueba El ejemplo demuestra cómo integrar el marco de prueba de Allure de 0 a 1. Se centra en cómo integrar Allure en un proyecto de prueba automatizado existente y cómo optimizar la visualización de informes. Allure es muy poderoso y soporta múltiples lenguajes y múltiples marcos de prueba, no importa si es java/python o Junit/TestNG, el proceso de implementación de otros lenguajes o marcos es el mismo que este artículo, y la configuración específica se refiere a la especificaciones marco de cada idioma

Instalar en pc

instalar encanto

Usuarios de Windows:

scoop install allure (primero debe descargar e instalar Scoop, este método no necesita configurar variables de entorno)
Usuarios de MAC:

Instalación automática a través de Homebrew
brew install allure &www.cppcns.comnbsp; (si la versión de Homebrew es antigua, primero debe actualizar Homebrew; de lo contrario, la versión de allure instalada también es muy antigua y es posible que no sea compatible con el complemento de Python)
Instalación manual:

Puede descargarlo manualmente desde el sitio web oficial https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/
La última versión es 2.13.6
Cómo usar allure para generar informes de prueba en python automatización

Después de descargar, descomprimir y configurar las variables de entorno.

Instale el complemento allure-pytest

pip instalar allure-pytest

encanto características comunes

Quiere ver características de prueba, subcaracterísticas o escenarios en el informe, pasos de prueba, incluida la información adicional de prueba, puede usar @feature, @story, @step, @attach

paso:

importar
la función allure más @allure.feature("nombre de la función")
subfunción más @allure.story("nombre de la subfunción")
paso más @allure.step("detalles del paso")
@allure.attach("Texto específico información"), se requiere información adicional, que puede ser datos, texto, imágenes, videos, páginas web.
Si solo prueba algunas funciones, puede agregar restricciones y filtros:
pytest file name --allure-features "El nombre del función que debe ejecutarse"

Característica atractiva: característica/historia.

@allure.feature frente a @allure.store

Una característica es equivalente a una función, un módulo grande, que clasifica el caso en una característica y lo muestra en el comportamiento en el informe, que es equivalente a una
historia de conjunto de pruebas, que corresponde a diferentes escenarios bajo esta función o módulo, y una función de rama, que pertenece a la función. La estructura del informe se muestra en las funciones, que es equivalente a la
función de caso de prueba y una historia similar a la
función de paso de relación padre e hijo

Cada paso en el proceso de prueba generalmente se ubica en un método lógico específico, pero
se puede ubicar en pasos clave, que se muestran en el informe de
la aplicación, prueba automatizada web, se recomienda cambiar a una nueva página como
uso de un paso:
@ allure.step () solo se puede colocar en una clase o método en forma de decorador
con allure.step(): se puede colocar en un método de caso de prueba, pero el código del paso de prueba debe incluirse en el declaración para
ejecutar:

Recopile resultados durante la ejecución de la prueba de www.cppcns.com

pytest [archivo de prueba] -s -q --alluredir=./result --clean-alluredir

--alluredir Esta opción se usa para especificar la ruta para almacenar los resultados de la prueba
--clean-alluredir Esta opción se usa para borrar los resultados generados previamente
Ver el informe de la prueba:

Método 1: vea el informe real después de completar la prueba, vea el informe en línea y abra directamente el navegador predeterminado para mostrar el informe actual

encanto servir ./resultado

Método 2: generar un informe a partir del resultado, que es un servicio que inicia Tomcat, que requiere dos pasos

Generar informe:

allure generate ./result -o ./report --clean (Nota: --clean se usa para borrar informes generados previamente)

Abra el informe:

allure open -h 127.0.0.1 -p 8883 ./report (este método genera directamente un servicio tomcat al que se puede acceder de forma remota)

por ejemplo:

Hay los siguientes archivos de código

#!/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')

Ejecute los comandos en secuencia:

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

encanto servir ./resultado

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

Informe generado:

Cómo usar allure para generar informes de prueba en la automatización de python

allure-feature-testcase

Casos de prueba asociados (puede vincular directamente a la dirección del caso de prueba)

ejemplo:

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

Cómo usar allure para generar informes de prueba en la automatización de python

Pruebas de alcance por nivel de importancia

Por lo general, las pruebas incluyen P0, prueba de humo y prueba de verificación en línea. Ejecutado según el nivel de importancia, por ejemplo, el proceso principal y los módulos importantes deben ejecutarse una vez al conectarse, lo que puede resolverse mediante los siguientes métodos

Agregando la etiqueta @pytest.mark

a través de allure.feature, allure.story

También puede adjuntar etiquetas a través de allure.severity

Nivel:
trivial: no importante, defecto menor (debe ingresarse sin aviso, o el aviso es irregular)
menor, no muy importante, defecto menor (el error de la interfaz no coincide con los requisitos de la interfaz de usuario)
normal: problema normal, defecto común (error de cálculo numérico)
crítico : Defecto grave y crítico (punto de función faltante)
blocker: bloqueo, defecto de interrupción (el programa cliente no responde y no puede realizar la siguiente operación)
Uso:

Agregue @allure.severity(allure.severity_level.TRIVIAL) arriba de los métodos, funciones y clases

implementar:

pytest -s -v nombre de archivo --allure-severities normal,crítico

por ejemplo:

#!/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

implementar:

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生成测试报告

Caso de uso definitivo:
búsqueda de Baidu:

#!/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()

implementar:

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

Ánimo: [Tutoriales que te pueden ayudar]

Estos materiales deben ser el almacén de preparación más amplio y completo para los amigos que hacen [pruebas de software]. Este almacén también me ha acompañado a través del viaje más difícil. ¡Espero que también pueda ayudarlos! Todo debe hacerse lo antes posible, especialmente en la industria de la tecnología, y la base técnica debe mejorarse.

Siga mi cuenta pública de WeChat [Programa Yuanmuzi] para obtenerlo gratis ~
inserte la descripción de la imagen aquí

Si no escalas una montaña, no sabes qué tan alto está el cielo. Esperar solo te hará fallar, y la lucha será exitosa.

inserte la descripción de la imagen aquí

Mi grupo de estudio: 644956177 Hay técnicos en el grupo para comunicarse y compartir~

Supongo que te gusta

Origin blog.csdn.net/Xsk215/article/details/117163066
Recomendado
Clasificación