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

Comenzando con Allure PHPUnit ​

Última versión de Allure PHPUnit

Genera informes HTML hermosos usando Allure Report y tus pruebas de PHPUnit.

Ejemplo de Allure Report PHPUnit

INFO

Consulta el proyecto de ejemplo en github.com/allure-examples/phpunit para ver Allure PHPUnit en acción.

Configuración ​

1. Prepara tu proyecto ​

  1. Instala la herramienta de línea de comandos de 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. Asegúrate de que tu proyecto utilice:

    • PHP versión 8.1, 8.2 o 8.3,
    • PHPUnit versión 10.
  3. Añade allure-framework/allure-phpunit a las dependencias de desarrollo de tu proyecto:

    plain
    php composer.phar require allure-framework/allure-phpunit --dev
  4. Habilita la extensión Allure para PHPUnit a través de una etiqueta <bootstrap> en phpunit.xml. En el parámetro config, especifica una ruta donde pondrás el archivo de configuración para Allure PHPUnit. Por ejemplo:

    xml
    <?xml version="1.0" encoding="UTF-8"?>
    <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.0/phpunit.xsd">
        <extensions>
            <bootstrap class="Qameta\Allure\PHPUnit\AllureExtension">
                <parameter name="config" value="config/allure.config.php"/>
            </bootstrap>
        </extensions>
    </phpunit>
  5. Crea un archivo de configuración de Allure PHPUnit en la ubicación especificada (config/allure.config.php en el ejemplo anterior). El archivo debe devolver un array asociativo que contenga opciones de configuración. Por ejemplo:

    php
    <?php
    
    return [
        'outputDirectory' => 'build/allure-results',
    ];

2. Ejecuta las pruebas ​

Ejecuta tus pruebas de PHPUnit de la misma manera en que las ejecutarías normalmente. Por ejemplo:

plain
vendor/bin/phpunit

Esto guardará los datos necesarios en build/allure-results u otra carpeta, según la configuración de outputDirectory. Si la carpeta ya existe, los nuevos archivos se agregarán a los existentes, de modo que un informe futuro se basará en todos ellos.

3. Genera un informe ​

Finalmente, convierte los resultados de las pruebas en un informe HTML. Esto se puede hacer con uno de dos comandos:

  • allure generate procesa los resultados de las pruebas y guarda un informe HTML en la carpeta allure-report. Para ver el informe, usa el comando allure open.

    Usa este comando si necesitas guardar el informe para referencia futura o para compartirlo con colegas.

  • allure serve crea el mismo informe que allure generate, pero lo coloca en una carpeta temporal e inicia un servidor web local configurado para mostrar el contenido de esa carpeta. Luego, el comando abre automáticamente la página principal del informe en un navegador web.

    Usa este comando si necesitas ver el informe por ti mismo y no necesitas guardarlo.

Escribir pruebas ​

El adaptador Allure PHPUnit extiende las características estándar de informes de PHPUnit proporcionando capacidades adicionales para crear pruebas más informativas y estructuradas. Esta sección destaca las mejoras clave que pueden ser utilizadas:

  • Anotación de Metadatos: Mejora los informes de pruebas con descripciones, enlaces y otros metadatos.
  • Organización de Pruebas: Estructura tus pruebas en jerarquías claras para una mejor legibilidad y organización.
  • División en Pasos: Divide las pruebas en pasos de prueba más pequeños para facilitar la comprensión y el mantenimiento.
  • Pruebas Parametrizadas: Describe claramente los parámetros de las pruebas parametrizadas para especificar diferentes escenarios.
  • Archivos Adjuntos: Captura automáticamente capturas de pantalla y otros archivos durante la ejecución de la prueba.
  • Detalles del Entorno: Incluye información completa sobre el entorno para acompañar el informe de la prueba.

En la mayoría de los casos, Allure PHPUnit proporciona dos formas diferentes de usar una característica: la API de Atributos y la API en Tiempo de Ejecución.

  • API de Atributos: agrega un atributo PHP a un método de prueba o a toda una clase para agregar ciertos datos al resultado de la prueba. Cuando se utiliza este enfoque, se garantiza que los datos se agreguen independientemente de cómo se ejecute la prueba.

  • API en Tiempo de Ejecución: usa las funciones de Allure para agregar ciertos datos al resultado de la prueba durante su ejecución. Este enfoque permite construir los datos dinámicamente.

    Ten en cuenta que se recomienda llamar a las funciones de Allure lo más cerca posible del comienzo de la prueba. De esta manera, los datos se agregarán incluso si la prueba falla al principio.

Especificar descripción, enlaces y otros metadatos ​

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

php
use PHPUnit\Framework\TestCase;
use Qameta\Allure\Attribute\Description;
use Qameta\Allure\Attribute\DisplayName;
use Qameta\Allure\Attribute\Issue;
use Qameta\Allure\Attribute\Link;
use Qameta\Allure\Attribute\Owner;
use Qameta\Allure\Attribute\Severity;
use Qameta\Allure\Attribute\TmsLink;

final class TestMyWebsite extends TestCase
{
    #[DisplayName('Test Labels')]
    #[Description('This test attempts to create a label with specified title.')]
    #[Severity(Severity::CRITICAL)]
    #[Owner('John Doe')]
    #[Link('My Website', 'https://example.com/')]
    #[Issue('UI-123')]
    #[TmsLink('TMS-456')]
    public function testLabels()
    {
        // ...
    }
}
php
use PHPUnit\Framework\TestCase;
use Qameta\Allure\Allure;
use Qameta\Allure\Model\Severity;

final class TestMyWebsite extends TestCase
{
    public function testLabels()
    {
        Allure::displayName('Test Labels');
        Allure::description('This test attempts to create a label with specified title.');
        Allure::severity(Severity::critical());
        Allure::owner('John Doe');
        Allure::link('My Website', 'https://example.com/');
        Allure::issue('UI-123');
        Allure::tms('TMS-456');
        // ...
    }
}

Organizar pruebas ​

Como se describe en Mejorar la navegación en tu informe de prueba, Allure admite varias formas de organizar las pruebas en estructuras jerárquicas. Allure PHPUnit proporciona la API para asignar los campos relevantes a las pruebas, ya sea añadiendo atributos o “dinámicamente” (igual que para los campos de metadatos).

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

php
use PHPUnit\Framework\TestCase;
use Qameta\Allure\Attribute\Epic;
use Qameta\Allure\Attribute\Feature;
use Qameta\Allure\Attribute\Story;

final class TestMyWebsite extends TestCase
{
    #[Epic('Web interface')]
    #[Feature('Essential features')]
    #[Story('Labels')]
    public function testLabels()
    {
        // ...
    }
}
php
use PHPUnit\Framework\TestCase;
use Qameta\Allure\Allure;

final class TestMyWebsite extends TestCase
{
    public function testLabels()
    {
        Allure::epic('Web interface');
        Allure::feature('Essential features');
        Allure::story('Labels');
        // ...
    }
}

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

php
use PHPUnit\Framework\TestCase;
use Qameta\Allure\Attribute\ParentSuite;
use Qameta\Allure\Attribute\SubSuite;
use Qameta\Allure\Attribute\Suite;

final class TestMyWebsite extends TestCase
{
    #[ParentSuite('Web interface')]
    #[Suite('Essential features')]
    #[SubSuite('Labels')]
    public function testLabels()
    {
        // ...
    }
}
php
use PHPUnit\Framework\TestCase;
use Qameta\Allure\Allure;

final class TestMyWebsite extends TestCase
{
    public function testLabels()
    {
        Allure::parentSuite('Web interface');
        Allure::suite('Essential features');
        Allure::subSuite('Labels');
        // ...
    }
}

Dividir una prueba en pasos ​

Allure PHPUnit proporciona tres formas de crear pasos y sub-pasos: “pasos basados en métodos”, “pasos lambda” y “pasos no operativos”, consulta la referencia.

php
use PHPUnit\Framework\TestCase;
use Qameta\Allure\Allure;
use Qameta\Allure\Attribute\DisplayName;
use Qameta\Allure\StepContextInterface;

final class TestMyWebsite extends TestCase
{
    public function testLabels()
    {
        Allure::runStep([$this, 'logIn']);
        Allure::runStep([$this, 'createLabel']);
        Allure::runStep([$this, 'checkThatLabelExists']);
    }

    #[DisplayName('Log in')]
    function logIn(StepContextInterface $context)
    {
        $context->parameter('Email', '[email protected]');
        $context->parameter('Password', 'qwerty');
        // ...
    }

    #[DisplayName('Create label')]
    function createLabel(StepContextInterface $context)
    {
        $context->parameter('Label name', 'My Label');
        // ...
    }

    #[DisplayName('Check that label exists')]
    function checkThatLabelExists(StepContextInterface $context)
    {
        $context->parameter('Label name', 'My Label');
        // ...
    }
}
php
use PHPUnit\Framework\TestCase;
use Qameta\Allure\Allure;
use Qameta\Allure\StepContextInterface;

final class TestMyWebsite extends TestCase
{
    public function testLabels()
    {
        Allure::runStep(function (StepContextInterface $context) {
            $context->name('Log in');
            $context->parameter('Email', '[email protected]');
            $context->parameter('Password', 'qwerty');
            // ...
        });

        Allure::runStep(function (StepContextInterface $context) {
            $context->name('Create label');
            $context->parameter('Label name', 'My Label');
            // ...
        });

        Allure::runStep(function (StepContextInterface $context) {
            $context->name('Check that label exists');
            $context->parameter('Label name', 'My Label');
            // ...
        });
    }
}
php
use PHPUnit\Framework\TestCase;
use Qameta\Allure\Allure;

final class TestMyWebsite extends TestCase
{
    public function testLabels()
    {
        // ...
        Allure::addStep('Log in');

        // ...
        Allure::addStep('Create label');

        // ...
        Allure::addStep('Check that label exists');
    }
}

Describir pruebas parametrizadas ​

Si usas el patrón de pruebas parametrizadas, llama a la función Allure::parameter() para agregar los parámetros al informe de pruebas, consulta la referencia.

php
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\TestCase;
use Qameta\Allure\Allure;

final class TestMyWebsite extends TestCase
{
    public static function credentialsProvider()
    {
        return [
            ['johndoe', 'qwerty'],
            ['[email protected]', 'qwerty'],
        ];
    }

    #[DataProvider('credentialsProvider')]
    public function testAuthentication(string $login, string $password)
    {
        Allure::parameter('login', $login);
        Allure::parameter('password', $password);
        // ...
    }
}
php
use PHPUnit\Framework\TestCase;
use Qameta\Allure\Allure;

final class TestMyWebsite extends TestCase
{
    public function testAuthenticationWithUsername()
    {
        Allure::parameter('login', 'johndoe');
        Allure::parameter('password', 'qwerty');
        // ...
    }

    public function testAuthenticationWithEmail()
    {
        Allure::parameter('login', '[email protected]');
        Allure::parameter('password', 'qwerty');
        // ...
    }
}

Adjuntar capturas de pantalla y otros archivos ​

Puedes adjuntar todo tipo de archivos 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 punto determinado.

Allure PHPUnit proporciona varias formas de crear un archivo adjunto, tanto de archivos existentes como generados dinámicamente, consulta la referencia.

php
use PHPUnit\Framework\TestCase;
use Qameta\Allure\Allure;

final class TestMyWebsite extends TestCase
{
    public function testLabels()
    {
        // ...
        Allure::attachment('data.txt', 'This is the file content.', 'text/plain');
        Allure::attachmentFile('data.txt', '/path/to/image.png', 'image/png');
    }
}

Seleccionar pruebas mediante un archivo de plan de pruebas ​

DANGER

El plan de pruebas actualmente no es compatible con el adaptador Allure PHPUnit.

Información del entorno ​

Para la página principal del informe, puedes recopilar varias informaciones 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 PHP. Esto puede ayudar al lector futuro a investigar errores que solo se reproducen en algunos entornos.

Allure Report Environments Widget

Para proporcionar información sobre el 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 característica 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.