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

Integración de capturas de pantalla en Allure Report con Pytest y Selenium ​

El proceso de interpretación de los resultados de las pruebas debe estar optimizado para velocidad y claridad. Idealmente, la causa raíz de un fallo debería ser identificable de inmediato sin que el lector tenga que inspeccionar código adicional, ejecutar un depurador o pedir ayuda a otros miembros del equipo.

Para lograr este objetivo, los informes de prueba deben transmitir información completa en un formato conciso. Un enfoque efectivo es la inclusión de capturas de pantalla, que proporcionan contexto visual para los fallos de prueba. Esta guía describe el proceso de capturar capturas de pantalla usando el complemento pytest-selenium e integrarlas en los informes de prueba con Allure Report para mejorar la legibilidad y el análisis.

1. Preparación ​

Requisitos previos ​

Asegúrate de cumplir con los siguientes requisitos previos:

  • Python instalado
  • Allure Report instalado

Lista de dependencias ​

Esta guía utiliza los siguientes paquetes:

  • Pytest 8.3.4
  • allure-pytest 2.13.5
  • pytest-selenium 4.1.0

Código de ejemplo ​

El código fuente completo utilizado en esta guía está disponible en https://github.com/allure-examples/guide-pytest-selenium-screenshots.

Configuración ​

Para ejecutar los ejemplos de esta guía:

  1. Instala Python
  2. Instala Allure Report
  3. Descarga un proyecto nuevo con Pytest desde Allure Start
  4. Agrega el complemento pytest-selenium a tu proyecto. Por ejemplo, si usas pip:
shell
pip install pytest-selenium

2. Capturas de pantalla con Selenium ​

Para tomar capturas de pantalla con pytest-selenium en cualquier momento, usa los métodos proporcionados por el objeto WebDriver, por ejemplo, save_screenshot. Para obtener el objeto WebDriver, puedes usar el fixture selenium:

python
def test_example(selenium):
    selenium.get("https://www.selenium.dev/")
    try:
        assert "Selenium" in selenium.title
    except AssertionError:
        selenium.save_screenshot("path/to/screenshot.png")
        raise

Siempre que llames al método save_screenshot, una captura de pantalla aparecerá en path/to/screenshot.png. También puedes usar otros métodos que proporciona el objeto WebDriver:

  • get_screenshot_as_file()
  • get_screenshot_as_png()
  • get_screenshot_as_base64()

Para tomar una captura de pantalla de un elemento en particular, usa el método screenshot del objeto WebElement, por ejemplo:

python
element = selenium.find_element(By.NAME, "q")  # o como sea que encuentres el elemento  
# tomar la captura de pantalla  
element.screenshot("path/to/element_screenshot.png")

También puedes usar estas propiedades de WebElement:

  • screenshot_as_png
  • screenshot_as_base64

3. Capturas de pantalla automáticas en caso de fallo ​

Para tomar capturas de pantalla automáticamente en cada fallo de prueba:

  1. Escribe un hook que pytest-selenium llamará para procesar las capturas de pantalla que toma. El código del hook debe colocarse en el archivo conftest.py en el directorio raíz de pruebas de tu proyecto:

    python
    # Contenido de conftest.py
    import base64
    
    
    def pytest_selenium_capture_debug(item, report, extra):
        for log_type in extra:
            if log_type["name"] == "Screenshot":
                content = base64.b64decode(log_type["content"].encode("utf-8"))
                with open(f"{item.name}.png", "wb") as f:
                    f.write(content)
  2. Establece la opción selenium_capture_debug a failure en la configuración de Pytest. Por ejemplo, si usas pyproject.toml como archivo de configuración, agrega lo siguiente:

    toml
    [tool.pytest.ini_options]
    ...
    selenium_capture_debug = "failure"

Ahora, cuando una prueba falle, se guardará automáticamente un archivo de captura de pantalla en tu proyecto.

4. Integración con Allure Report ​

Si bien capturar capturas de pantalla es beneficioso para diagnosticar fallos en las pruebas, verlas por separado puede ser ineficiente. Cuando los datos de la prueba están dispersos en varias ubicaciones, el proceso de identificar y resolver fallos se vuelve más lento.

Para agilizar este flujo de trabajo, las capturas de pantalla deben adjuntarse directamente a los informes de Allure, asegurando que toda la información relevante de la prueba esté consolidada en un solo lugar para un análisis y resolución de problemas más eficiente.

Allure Report te muestra las capturas de pantalla dentro de la prueba en la que fueron tomadas. Allí también se presentan los mensajes de error y otros archivos adjuntos, por lo que tienes todo lo que necesitas para analizar los resultados de la prueba en un solo lugar:

Adjunto de Captura de Pantalla en Allure Report

Para adjuntar capturas de pantalla a Allure, usa ya sea la función allure.attach() o la función allure.attach.file().

Usa allure.attach.file() para adjuntar un archivo existente:

python
import allure
from pathlib import Path

# Adjuntar una captura de pantalla de una página
def attach_screenshot(driver, path):
    name = Path(path).name
    driver.get_screenshot_as_file(path)
    allure.attach.file(
        path,
        name=name,
        attachment_type=allure.attachment_type.PNG,
    )

# Adjuntar una captura de pantalla de elemento
def attach_element_screenshot(element, path):
    name = Path(path).name
    element.screenshot(path)
    allure.attach.file(
        path,
        name=name,
        attachment_type=allure.attachment_type.PNG,
    )

Usa allure.attach() si no necesitas guardar la captura de pantalla en disco:

python
import allure

# Adjuntar una captura de pantalla de una página
def attach_screenshot(driver, name):
    allure.attach(
        driver.get_screenshot_as_png(),
        name=name,
        attachment_type=allure.attachment_type.PNG,
    )

# Adjuntar una captura de pantalla de elemento
def attach_element_screenshot(element, name):
    allure.attach(
        element.get_screenshot_as_png(),
        name=name,
        attachment_type=allure.attachment_type.PNG,
    )

TIP

Cuando necesites adjuntar una captura de pantalla recién tomada, es preferible usar la función allure.attach si es posible. La razón es que cuando guardas una captura de pantalla en el disco, es posible que no esté disponible de inmediato para su lectura debido al almacenamiento en caché del sistema operativo. Si eso sucede, podrías terminar con un archivo vacío adjunto en Allure.

Para adjuntar automáticamente las capturas de pantalla a Allure en cada fallo de prueba, usa una versión ligeramente modificada del hook de pytest-selenium que hemos escrito en la sección Capturas de pantalla automáticas en caso de fallo:

python
# Contenido de conftest.py
import allure
import base64


from allure_commons.types import AttachmentType

def pytest_selenium_capture_debug(item, report, extra):
    for log_type in extra:
        if log_type["name"] == "Screenshot":
            content = base64.b64decode(log_type["content"].encode("utf-8"))
            allure.attach(
                content,
                name="Screenshot on failure",
                attachment_type=AttachmentType.PNG,
            )

5. Otros tipos de adjuntos ​

Allure Report también puede manejar otros tipos de adjuntos, como texto, tablas, listas de URI o documentos (XML, JSON, YAML). Por ejemplo:

python
allure.attach(
    response_content,
    name="response content",
    attachment_type=allure.attachment_type.XML
)

Allure Pytest adjunta algunos elementos automáticamente:

  1. Todo lo enviado a sys.stdout, por ejemplo, print(...)
  2. Todo lo enviado a sys.stderr, por ejemplo, print(..., file=sys.stderr)
  3. Registros de logging, por ejemplo, logging.warning(...)

Estos resultados se adjuntan al informe como pseudoarchivos:

Adjuntos automáticos en Allure Report con Pytest

Si no deseas que todo esto aparezca en el informe, usa la opción --allure-no-capture.

Allure también te permite adjuntar videos. Puedes consultar la documentación oficial para obtener más información sobre adjuntos con Pytest y tipos de adjuntos.

6. Conclusión ​

Al usar Pytest con Selenium, puedes tomar capturas de pantalla en momentos arbitrarios durante tus pruebas o instruir a Selenium para que tome capturas de pantalla automáticamente en caso de fallos en las pruebas. Allure Report permite ver las capturas de pantalla y otros archivos adjuntos de las pruebas (texto, documentos, tablas, videos) en un solo lugar, proporcionando al lector la mayor cantidad de datos para resolver los fallos de las pruebas.

Pager
Previous pageParametrización en Pytest
Next pagePytest & Playwright: capturas de pantalla y adjuntos
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.