Introducción a Allure Pytest-BDD
Genera informes HTML hermosos utilizando Allure Report y tus pruebas con Pytest-BDD.
Configuración
1. Prepara tu proyecto
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.
Abre una terminal y dirígete al directorio del proyecto. Por ejemplo:
bashcd /home/user/myproject
Si es necesario para la configuración de tu sistema, activa el entorno virtual de Python para tu proyecto.
Por ejemplo, si el proyecto utiliza un entorno
venv
, el comando para activarlo podría ser similar a este:bashsource .venv/bin/activate
Este paso no es necesario si estás utilizando el entorno de Python del sistema.
Instala el adaptador Allure Pytest-BDD.
bashpip install allure-pytest-bdd
2. Ejecuta las pruebas
Al ejecutar tus pruebas, especifica una ruta para el directorio de resultados de pruebas en el argumento de línea de comandos --alluredir
. Por ejemplo:
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 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 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 comienza un servidor web local configurado para mostrar el contenido de este directorio. 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.
Describir pruebas parametrizadas
Allure Pytest-BDD puede mostrar los parámetros pasados a las pruebas mediante tablas de Examples
, consulta la referencia.
Feature: User management
Scenario Outline: Registration
When I go to the registration form
And I enter my details: <login>, <password>, <name>, <birthday>
Then the profile should be created
Examples:
| login | password | name | birthday |
| johndoe | qwerty | John Doe | 1970-01-01 |
| janedoe | 123456 | Jane Doe | 1111-11-11 |
Adjuntar capturas de pantalla y otros archivos
Puedes adjuntar cualquier tipo de archivo a tu informe 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 específico.
Allure Pytest-BDD proporciona varias formas de crear un archivo adjunto, ya sea desde archivos existentes o generados dinámicamente, consulta la referencia.
import allure
import requests
from pytest_bdd import then
@then("I open labels page")
def test_labels():
...
png_bytes = requests.get('https://example.com/image.png').content
allure.attach(png_bytes, name="my-image", attachment_type=allure.attachment_type.PNG)
allure.attach.file('/path/to/image.png', name="my-image", attachment_type=allure.attachment_type.PNG)
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 registrar la versión del sistema operativo y la versión de Python. Esto puede ayudar al lector futuro a investigar errores reproducibles solo en algunos 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 cambian en todas las pruebas del informe. Si tienes propiedades que pueden ser diferentes para distintas pruebas, considera usar Pruebas parametrizadas.