Introducción a Allure Codeception
Genera hermosos informes HTML utilizando Allure Report y tus pruebas de Codeception.
Configuración
1. Prepara tu proyecto
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.
Asegúrate de que tu proyecto utilice PHP 8 y Codeception 5.
Agrega
allure-framework/allure-codeception
a las dependencias de desarrollo de tu proyecto:plainphp composer.phar require allure-framework/allure-codeception --dev
Habilita la extensión Allure para Codeception en
codeception.yml
.yamlnamespace: Tests support_namespace: Support paths: tests: tests output: tests/_output data: tests/Support/Data support: tests/Support envs: tests/_envs extensions: enabled: - Qameta\Allure\Codeception\AllureCodeception
Opcionalmente, especifica opciones de configuración, como se describe en Configuración.
2. Ejecuta las pruebas
Ejecuta tus pruebas de Codeception de la misma manera que lo harías normalmente. Por ejemplo:
vendor/bin/codecept run
Esto guardará los datos necesarios en el directorio de resultados de prueba, de acuerdo con la configuración de outputDirectory
. Si el directorio ya existe, los nuevos archivos se añadirán a los existentes, de modo que un informe futuro se base 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 los dos comandos:
allure generate
procesa los resultados de las pruebas y guarda un informe HTML en el directorioallure-report
. Para ver el informe, usa el comandoallure open
.Usa este comando si necesitas guardar el informe para referencia futura o para compartirlo con colegas.
allure serve
crea el mismo informe queallure generate
, pero lo coloca en un directorio temporal y arranca un servidor web local configurado para mostrar los contenidos de este directorio. El comando abre automáticamente la página principal del informe en un navegador web.Usa este comando si necesitas ver el informe para ti mismo y no necesitas guardarlo.
Escribir pruebas
El adaptador Allure Codeception amplía las características de informes estándar de Codeception proporcionando capacidades adicionales para crear pruebas más informativas y estructuradas. Esta sección resalta mejoras clave que puedes utilizar:
- Anotaciones de metadatos: Mejora los informes de prueba con descripciones, enlaces y otros metadatos.
- Organización de pruebas: Estructura tus pruebas en jerarquías claras para mejorar la legibilidad y la organización.
- División en pasos: Divide las pruebas en pasos más pequeños para facilitar su comprensión y mantenimiento.
- Pruebas parametrizadas: Describe claramente los parámetros para pruebas parametrizadas para especificar diferentes escenarios.
- Adjuntos: Captura automáticamente capturas de pantalla y otros archivos durante la ejecución de las pruebas.
- Detalles del entorno: Incluye información completa del entorno para acompañar el informe de prueba.
En la mayoría de los casos, Allure Codeception ofrece dos formas diferentes de usar una función: la API de Atributos y la API de Tiempo de Ejecución.
API de Atributos: añade un atributo PHP a un método de prueba o a toda una clase para agregar ciertos datos al resultado de la prueba. Con este enfoque, los datos están garantizados de ser añadidos independientemente de cómo se ejecute la prueba.
API de Tiempo de Ejecución: usa las funciones de Allure para añadir ciertos datos al resultado de la prueba durante su ejecución. Este enfoque permite construir los datos de manera dinámica.
Ten en cuenta que se recomienda llamar a las funciones de Allure lo más cerca posible del inicio de la prueba. De este modo, los datos se añadirán incluso si la prueba falla al principio.
Especificar descripciones, 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.
use Codeception\Test\Unit;
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;
class TestMyWebsite extends Unit
{
#[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()
{
// ...
}
}
use Codeception\Test\Unit;
use Qameta\Allure\Allure;
use Qameta\Allure\Model\Severity;
class TestMyWebsite extends Unit
{
public function testLabels()
{
Allure::displayName('Test Metadata');
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 múltiples formas de organizar pruebas en estructuras jerárquicas. Allure Codeception proporciona la API para asignar los campos relevantes a las pruebas, ya sea mediante la adición de atributos o de manera “dinámica” (igual que para los campos de metadatos).
Para especificar la ubicación de una prueba en la jerarquía basada en el comportamiento:
use Codeception\Test\Unit;
use Qameta\Allure\Attribute\Epic;
use Qameta\Allure\Attribute\Feature;
use Qameta\Allure\Attribute\Story;
class TestMyWebsite extends Unit
{
#[Epic('Web interface')]
#[Feature('Essential features')]
#[Story('Labels')]
public function testLabels()
{
// ...
}
}
use Codeception\Test\Unit;
use Qameta\Allure\Allure;
class TestMyWebsite extends Unit
{
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 suites:
use Codeception\Test\Unit;
use Qameta\Allure\Attribute\ParentSuite;
use Qameta\Allure\Attribute\SubSuite;
use Qameta\Allure\Attribute\Suite;
class TestMyWebsite extends Unit
{
#[ParentSuite('Web interface')]
#[Suite('Essential features')]
#[SubSuite('Labels')]
public function testLabels()
{
// ...
}
}
use Codeception\Test\Unit;
use Qameta\Allure\Allure;
class TestMyWebsite extends Unit
{
public function testLabels()
{
Allure::parentSuite('Web interface');
Allure::suite('Essential features');
Allure::subSuite('Labels');
// ...
}
}
Dividir una prueba en pasos
Allure Codeception proporciona tres formas de crear pasos y sub-pasos: “pasos basados en métodos”, “pasos lambda” y “pasos no operativos (no-op steps)”. Consulta la referencia.
use Codeception\Test\Unit;
use Qameta\Allure\Allure;
use Qameta\Allure\Attribute\DisplayName;
use Qameta\Allure\StepContextInterface;
class TestMyWebsite extends Unit
{
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');
// ...
}
}
use Codeception\Test\Unit;
use Qameta\Allure\Allure;
use Qameta\Allure\StepContextInterface;
class TestMyWebsite extends Unit
{
public function testLabels()
{
Allure::runStep(function (StepContextInterface $context) {
$context->parameter('Email', '[email protected]');
$context->parameter('Password', 'qwerty');
// ...
}, 'Log in');
Allure::runStep(function (StepContextInterface $context) {
$context->parameter('Label name', 'My Label');
// ...
}, 'Create label');
Allure::runStep(function (StepContextInterface $context) {
$context->parameter('Label name', 'My Label');
// ...
}, 'Check that label exists');
}
}
use Codeception\Test\Unit;
use Qameta\Allure\Allure;
class TestMyWebsite extends Unit
{
public function testLabels()
{
// ...
Allure::addStep('Log in');
// ...
Allure::addStep('Create label');
// ...
Allure::addStep('Check that label exists');
}
}
Describir pruebas parametrizadas
Si utilizas el patrón de pruebas parametrizadas, llama a la función Allure::parameter()
para agregar los parámetros al informe de prueba. Consulta la referencia.
use Codeception\Test\Unit;
use Qameta\Allure\Allure;
class TestMyWebsite extends Unit
{
public function testAuthenticationWithUsername()
{
Allure::parameter('login', 'johndoe');
Allure::parameter('password', 'qwerty');
// ...
}
public function testAuthenticationWithEmail()
{
Allure::parameter('login', '[email protected]');
Allure::parameter('password', 'qwerty');
// ...
}
}
use Codeception\Attribute\DataProvider;
use Codeception\Test\Unit;
use Qameta\Allure\Allure;
class ParametersProviderTest extends Unit
{
protected function dataProvider()
{
return [
['login' => 'johndoe', 'password' => 'qwerty'],
['login' => '[email protected]', 'password' => 'qwerty'],
];
}
#[DataProvider('dataProvider')]
public function testAuthenticationWithData($login, $password)
{
Allure::parameter('Login', $login);
Allure::parameter('Password', $password);
// ...
}
}
Adjuntar capturas de pantalla y otros archivos
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 punto determinado.
Allure Codeception ofrece varias formas de crear un adjunto, ya sea a partir de archivos existentes o generados dinámicamente. Consulta la referencia.
use Codeception\Test\Unit;
use Qameta\Allure\Allure;
class TestMyWebsite extends Unit
{
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 Codeception.
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 utilizar esto para registrar 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 ciertos entornos.
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 cambien en todas las pruebas del informe. Si tienes propiedades que pueden variar entre diferentes pruebas, considera usar Pruebas parametrizadas.