Skip to content
Allure report logoAllure Report
Main Navigation MódulosDocumentaciónStart

Español

English

Español

English

Appearance

Sidebar Navigation

Introducción

Instalación y Actualización

Instalación para Windows

Instalación para macOS

Instalación para Linux

Instalación para Node.js

Actualización

Primeros pasos

Cómo ver un informe

Mejorar la legibilidad de informes

Mejorar la navegación en informe

Funcionalidades

Pasos de prueba

Adjuntos

Estados de prueba

Ordenar y filtrar

Categorías de defectos

Análisis visual

Análisis de estabilidad de prueba

Historial y reintentos

Cronología

Exportar a CSV

Exportar métricas

Guías

Parametrización JUnit 5

JUnit 5 & Selenide: capturas de pantalla y adjuntos

JUnit 5 & Selenium: capturas de pantalla y adjuntos

Configurar JUnit 5 con GitHub Actions

Parametrización en Pytest

Pytest & Selenium: capturas de pantalla y adjuntos

Pytest & Playwright: capturas de pantalla y adjuntos

Pytest & Playwright: videos

Parametrización en Playwright

Cómo funciona

Visión general

Archivo de resultados de prueba

Archivo de contenedor

Archivo de categorías

Archivo de entorno

Archivo de ejecutor

Archivos de historial

Integraciones

Azure DevOps

Bamboo

GitHub Actions

Jenkins

IDEs de JetBrains

TeamCity

Visual Studio Code

Frameworks

Behat

Empezando

Configuración

Referencia

Behave

Empezando

Configuración

Referencia

Codeception

Empezando

Configuración

Referencia

CodeceptJS

Empezando

Configuración

Referencia

Cucumber.js

Empezando

Configuración

Referencia

Cucumber-JVM

Empezando

Configuración

Referencia

Cucumber.rb

Empezando

Configuración

Referencia

Cypress

Empezando

Configuración

Referencia

Jasmine

Empezando

Configuración

Referencia

JBehave

Empezando

Configuración

Referencia

Jest

Empezando

Configuración

Referencia

JUnit 4

Empezando

Configuración

Referencia

JUnit 5

Empezando

Configuración

Referencia

Mocha

Empezando

Configuración

Referencia

Newman

Empezando

Configuración

Referencia

NUnit

Empezando

Configuración

Referencia

PHPUnit

Empezando

Configuración

Referencia

Playwright

Empezando

Configuración

Referencia

pytest

Empezando

Configuración

Referencia

Pytest-BDD

Empezando

Configuración

Referencia

Reqnroll

Empezando

Configuración

Referencia

REST Assured

Empezando

Configuración

Robot Framework

Empezando

Configuración

Referencia

RSpec

Empezando

Configuración

Referencia

SpecFlow

Empezando

Configuración

Referencia

Spock

Empezando

Configuración

Referencia

TestNG

Empezando

Configuración

Referencia

Vitest

Empezando

Configuración

Referencia

WebdriverIO

Empezando

Configuración

Referencia

xUnit.net

Empezando

Configuración

Referencia

On this page

Empezando con Allure Pytest ​

Allure Pytest pypi última versión

Genera hermosos informes HTML utilizando Allure Report y tus pruebas de pytest.

Ejemplo de informe Allure Pytest

INFO

Consulta el proyecto de ejemplo en github.com/allure-examples/pytest-pip para ver Allure Pytest en acción.

Configuración ​

1. Prepara tu proyecto ​

Estas instrucciones dependen de si ya tienes algunas pruebas o estás empezando un proyecto.

Agregar Allure Pytest a un proyecto existente ​

Si tienes algunas pruebas de pytest y deseas poder usar Allure Report con ellas:

  1. Instala la herramienta de línea de comandos Allure Report, si aún no está instalada en tu sistema operativo. Ten en cuenta que Allure Report requiere Java, consulta las instrucciones de instalación.

  2. Abre una terminal y ve al directorio del proyecto. Por ejemplo:

    bash
    cd /home/user/myproject
  3. Si es necesario para la configuración de tu sistema, activa el entorno virtual de Python para tu proyecto. Por ejemplo, si el proyecto usa un entorno venv, el comando para activarlo podría verse así:

    bash
    source .venv/bin/activate

    Este paso no es necesario si estás usando el entorno Python del sistema.

  4. Instala el adaptador Allure Pytest.

    bash
    pip install allure-pytest

Empezando un nuevo proyecto con Allure Pytest ​

Si estás comenzando un nuevo proyecto que contendrá pruebas de pytest:

  1. Instala la herramienta de línea de comandos Allure Report, si aún no está instalada en tu sistema operativo. Ten en cuenta que Allure Report requiere Java, consulta las instrucciones de instalación.

  2. Crea un directorio para el proyecto.

  3. Abre una terminal y ve al directorio del proyecto. Por ejemplo:

    bash
    cd /home/user/myproject
  4. Si es necesario, crea y activa un entorno virtual de Python para tu proyecto. Por ejemplo, los comandos para crear y activar un entorno venv pueden verse así:

    bash
    python -m venv .venv
    source .venv/bin/activate

    Este paso no es necesario si vas a utilizar el entorno Python del sistema en el proyecto.

  5. Escribe tus pruebas, siguiendo la documentación oficial de pytest y, opcionalmente, usando algunas características extendidas proporcionadas por Allure Pytest, consulta Escribir pruebas.

2. Ejecuta las pruebas ​

Al ejecutar tus pruebas, especifica una ruta para el directorio de resultados de las pruebas en el argumento de línea de comandos --alluredir. Por ejemplo:

bash
python -m pytest --alluredir allure-results

Esto guardará los datos necesarios en el directorio de resultados de las pruebas. Si el directorio ya existe, los nuevos archivos se agregarán a los existentes, de modo que un futuro informe se basará en todos ellos.

3. Genera un informe ​

Finalmente, ejecuta Allure para convertir los resultados de las pruebas en un informe HTML. Esto abrirá automáticamente tu navegador para ver el informe.

bash
allure serve allure-results

Reemplaza allure-results con la ruta al directorio especificado en la configuración outputFolder del reporter, consulta Configuración.

Hay algunas opciones que pueden afectar cómo se genera el informe. Ejecuta allure --help para ver la lista completa de opciones.

Escribir pruebas ​

El adaptador Allure Pytest no solo recopila los datos proporcionados por las características estándar de pytest, sino que también ofrece características adicionales para escribir pruebas aún mejores. Esta sección enumera las formas más destacadas de mejorar tus pruebas, utilizando tanto las características de pytest como las de Allure Pytest.

Con Allure Pytest, puedes:

  • proporcionar descripción, enlaces y otros metadatos,
  • organizar pruebas en jerarquías,
  • dividir la prueba en pasos más pequeños y fáciles de leer pasos de prueba,
  • describir los parámetros utilizados al ejecutar pruebas parametrizadas,
  • agregar títulos legibles a fixtures,
  • hacer que la prueba guarde capturas de pantalla y otros archivos durante la ejecución,
  • seleccionar qué pruebas ejecutar a través de un archivo de plan de pruebas.

Especificar descripción, enlaces y otros metadatos ​

Hay muchos metadatos que puedes agregar a cada prueba para que aparezca en el informe. Consulta la referencia para más detalles.

Para cada uno de los campos de metadatos, hay varias formas de asignarlos.

  • Llamar a una función de Allure dentro del cuerpo de la función de prueba. Esta forma se llama “dinámica” porque te permite construir cadenas y otros valores en tiempo de ejecución antes de pasarlos a los métodos.
  • Usar una función de Allure como un decorador en la función de prueba o en una clase de prueba.
  • Agregar una función de Allure como una marca de pytest a un módulo o un paquete (consulta la sección Marcar clases o módulos completos en la documentación de pytest).

TIP

Si configuras los campos utilizando decoradores o marcas de pytest, luego puedes seleccionar y ejecutar pruebas según algunos campos de metadatos, consulta Opciones que afectan la selección de pruebas.

python
import allure

@allure.title("Test Authentication")
@allure.description("This test attempts to log into the website using a login and a password. Fails if any error happens.\n\nNote that this test does not test 2-Factor Authentication.")
@allure.tag("NewUI", "Essentials", "Authentication")
@allure.severity(allure.severity_level.CRITICAL)
@allure.label("owner", "John Doe")
@allure.link("https://dev.example.com/", name="Website")
@allure.issue("AUTH-123")
@allure.testcase("TMS-456")
def test_authentication():
    ...
python
import allure

def test_authentication():
    allure.dynamic.title("Test Authentication")
    allure.dynamic.description("This test attempts to log into the website using a login and a password. Fails if any error happens.\n\nNote that this test does not test 2-Factor Authentication.")
    allure.dynamic.tag("NewUI", "Essentials", "Authentication")
    allure.dynamic.severity(allure.severity_level.CRITICAL)
    allure.dynamic.label("owner", "John Doe")
    allure.dynamic.link("https://dev.example.com/", name="Website")
    allure.dynamic.issue("AUTH-123")
    allure.dynamic.testcase("TMS-456")
    ...

Organizar pruebas ​

Como se describe en Mejorando la navegación en tu informe de pruebas, Allure admite múltiples formas de organizar las pruebas en estructuras jerárquicas. Allure Pytest proporciona funciones para asignar los campos relevantes a las pruebas ya sea agregando decoradores o marcas o llamando a las funciones “dinámicas” (lo mismo que para los campos de metadatos).

Para especificar la ubicación de una prueba en la jerarquía basada en el comportamiento:

python
import allure

@allure.epic("Web interface")
@allure.feature("Essential features")
@allure.story("Authentication")
def test_authentication():
    ...
python
import allure

def test_authentication():
    allure.dynamic.epic("Web interface")
    allure.dynamic.feature("Essential features")
    allure.dynamic.story("Authentication")
    ...

Para especificar la ubicación de una prueba en la jerarquía basada en la suite:

python
import allure

@allure.parent_suite("Tests for web interface")
@allure.suite("Tests for essential features")
@allure.sub_suite("Tests for authentication")
def test_authentication():
    ...
python
import allure

def test_authentication():
    allure.dynamic.parent_suite("Tests for web interface")
    allure.dynamic.suite("Tests for essential features")
    allure.dynamic.sub_suite("Tests for authentication")
    ...

La ubicación de una prueba en la jerarquía basada en el paquete se define por el nombre completamente calificado de las clases y funciones en las que se declaran, con los prefijos comunes mostrados como paquetes principales.

Dividir una prueba en pasos ​

Allure Pytest proporciona dos formas de crear pasos y sub-pasos: “pasos decorados” y “pasos de contexto”, ambos implementados por allure.step().

python
import allure

def test_example():
    steps = Steps()
    steps.step1()
    steps.step2()

class Steps:
    @allure.step("Step 1")
    def step1(self):
        ...

    @allure.step("Step 2")
    def step2(self):
        ...
python
import allure

def test_example():
    with allure.step("Step 1"):
        ...

    with allure.step("Step 2"):
        ...

Describir pruebas parametrizadas ​

Al utilizar el patrón de pruebas parametrizadas, Allure Pytest agrega automáticamente los valores de los parámetros al informe de la prueba. Allure admite todos los métodos de parametrización de pruebas que admite pytest, incluidas las declaraciones de parámetros para fixtures.

Adicionalmente, puedes:

  • incorporar el valor de un parámetro en los títulos de las pruebas, consulta title();
  • agregar manualmente un pseudo-parámetro, consulta parameter();
  • sobrescribir el valor de un parámetro con una representación más legible, consulta parameter();
python
from os.path import basename, expanduser

import allure
import pytest


@pytest.mark.parametrize("login", [
    "johndoe",
    "[email protected]",
])
def test_authentication(login):
    ...


def test_authentication_with_empty_login():
    allure.dynamic.parameter("login", "(empty)")
    ...


@pytest.mark.parametrize("ssh_key", [
    expanduser("~/.ssh/id_rsa1"),
    expanduser("~/.ssh/id_rsa2"),
    expanduser("~/.ssh/id_rsa3"),
])
def test_authentication_with_ssh_key(ssh_key):
    allure.dynamic.parameter("ssh_key", basename(ssh_key))
    ...

TIP

Para más información, puedes consultar la guía sobre Parametrización de Pytest.

Describir fixtures ​

El concepto de fixtures de pytest proporciona una manera para que cada prueba defina las características que requiere simplemente especificando los argumentos de la función con sus nombres. Algunas fixtures son proporcionadas por pytest mismo, otras pueden ser proporcionadas por bibliotecas adicionales o tu propio código. Consulta la documentación de pytest para más detalles.

Al mostrar una prueba en un informe de prueba, Allure muestra las operaciones relacionadas con las fixtures de manera similar a como muestra los pasos de prueba. Para facilitar la comprensión del propósito de una fixture, puedes especificar su título usando el decorador @allure.title().

python
import allure
import pytest

@pytest.fixture()
@allure.title("Prepare for the test")
def my_fixture():
    ...  # set up
    yield
    ...  # tear down

def test_with_my_fixture(my_fixture):
    ...

Fixtures de Allure Report Pytest

Adjuntar capturas de pantalla y otros archivos ​

TIP

Consulta nuestras guías para capturas de pantalla en Pytest usando Selenium o Playwright:

  • Pytest & Selenium: capturas de pantalla
  • Pytest & Playwright: capturas de pantalla

Puedes adjuntar cualquier tipo de archivo a tu informe de Allure. Por ejemplo, una forma popular de hacer que un informe sea más fácil de entender es adjuntar una captura de pantalla de la interfaz de usuario en un momento específico. Para hacerlo, usa allure.attach() o allure.attach.file().

python
import allure
from pathlib import Path

def test_attach(page):
    page.goto("https://example.com/")
    png_bytes = page.screenshot()
    allure.attach(
        png_bytes,
        name="full-page",
        attachment_type=allure.attachment_type.PNG
    )

def test_attach_file(page):
    page.goto("https://example.com/")
    png_bytes = page.screenshot()
    Path("full-page.png").write_bytes(png_bytes)
    allure.attach.file(
        "full-page.png",
        name="full-page",
        attachment_type=allure.attachment_type.PNG
    )

Por defecto, Allure Pytest agrega los siguientes datos como pseudo-archivos adjuntos:

Nombre del adjuntoContenido
stdoutTodos los datos que se escribieron en sys.stdout, por ejemplo, a través de print(...).
stderrTodos los datos que se escribieron en sys.stderr, por ejemplo, a través de print(..., file=sys.stderr).
logTodos los datos que se registraron en el mecanismo de registro estándar, por ejemplo, a través de logging.debug(...).

Este comportamiento se puede desactivar mediante la opción --allure-no-capture.

Seleccionar pruebas mediante un archivo de plan de pruebas ​

Si la variable de entorno ALLURE_TESTPLAN_PATH está definida y apunta a un archivo existente, pytest solo ejecutará las pruebas listadas en este archivo.

Aquí tienes un ejemplo de cómo ejecutar pruebas según un archivo llamado testplan.json:

bash
export ALLURE_TESTPLAN_PATH=testplan.json
python -m pytest
powershell
$Env:ALLURE_TESTPLAN_PATH = "testplan.json"
python -m pytest

Información del entorno ​

Para la página principal del informe, puedes recopilar diversa información sobre el entorno en el que se ejecutaron las pruebas.

Por ejemplo, es una buena idea usar esto para recordar la versión del sistema operativo y la versión de Python. Esto puede ayudar al lector futuro a investigar errores que solo son reproducibles en algunos entornos.

Allure Report Environments Widget

Para proporcionar información del entorno, coloca un archivo llamado environment.properties en el directorio allure-results después de ejecutar las pruebas. Consulta el ejemplo en Archivo de entorno.

Ten en cuenta que esta función debe usarse para propiedades que no cambian para todas las pruebas en el informe. Si tienes propiedades que pueden ser diferentes para diferentes pruebas, considera usar Pruebas parametrizadas.

Pager
Previous pageReferencia
Next pageConfiguración
Powered by

Únete a nuestro boletín

Allure TestOps
  • Visión general
  • Por qué elegirnos
  • Nube
  • Autoalojado
  • Historias de éxito
Compañía
  • Documentación
  • Blog
  • Sobre nosotros
  • Contacto
  • Eventos
© 2025 Qameta Software Inc. All rights reserved.