Introducción a Allure Behave
Genera hermosos informes HTML utilizando Allure Report y tus pruebas de behave.
INFO
Consulta el proyecto de ejemplo en github.com/allure-examples/behave-pip para ver Allure Behave en acción.
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. Nota: Allure Report requiere Java. Consulta las instrucciones de instalación.
Abre un terminal y dirígete al directorio de tu proyecto. Por ejemplo:
bashcd /home/usuario/miproyecto
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 ser:
bashsource .venv/bin/activate
Este paso no es necesario si estás usando el entorno Python del sistema.
Instala el adaptador Allure Behave.
bashpip install allure-behave
En el archivo de configuración de Behave (como
.behaverc
obehave.ini
), especifica Allure Behave como el formateador de salida y define la ruta al directorio de resultados de las pruebas.Por ejemplo:
ini[behave] format=allure_behave.formatter:AllureFormatter outfiles=allure-results
2. Ejecuta las pruebas
Ejecuta tus pruebas de Behave de la misma manera que lo harías normalmente. Por ejemplo:
python -m behave
Esto guardará los datos necesarios en el directorio allure-results
u otro especificado según la opción outfile
. 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 los dos comandos:
allure generate
procesa los resultados de las pruebas y guarda un informe HTML en el directorioallure-report
. Para ver el informe, utiliza el comandoallure open
.Usa este comando si necesitas guardar el informe para futuras referencias o para compartirlo con colegas.
allure serve
crea el mismo informe queallure generate
pero lo coloca en un directorio temporal y lanza un servidor web local configurado para mostrar el contenido de ese directorio. Luego, el comando abre automáticamente la página principal del informe en un navegador web.Usa este comando si solo necesitas ver el informe por ti mismo y no necesitas guardarlo.
Escribir pruebas
El adaptador Allure Behave amplía las características estándar de informes de Behave proporcionando capacidades adicionales para crear pruebas más informativas y estructuradas. Esta sección destaca las principales mejoras 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 una mejor legibilidad y 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 y especifica diferentes escenarios.
- Adjuntos: Captura automáticamente capturas de pantalla y otros archivos durante la ejecución de las pruebas.
- Selección de pruebas: Usa un archivo de plan de pruebas para seleccionar qué pruebas ejecutar, lo que permite una ejecución de pruebas flexible.
- Detalles del entorno: Incluye información completa sobre el entorno para acompañar el informe de pruebas.
En la mayoría de los casos, necesitas indicar a Allure Behave que se asigne una propiedad específica al resultado de la prueba. La mayoría de las propiedades pueden asignarse mediante etiquetas Gherkin o la API en tiempo de ejecución.
Etiquetas Gherkin: Usa etiquetas Gherkin para asignar varios datos a un
Scenario
específico o a toda unaFeature
. Ten en cuenta que, debido a una limitación de la sintaxis de Gherkin, una etiqueta no puede contener espacios.Al usar este enfoque, se garantiza que los datos se agreguen al resultado de la prueba independientemente de cómo se ejecute la prueba.
API en tiempo de ejecución: Usa las funciones de Allure para agregar datos al resultado de la prueba durante la ejecución de sus pasos. 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 esta manera, los datos se agregarán incluso si la prueba falla al principio.
Especificar descripciones, enlaces y otros metadatos
Existen muchos metadatos que puedes agregar a cada prueba para que aparezcan en el informe. Consulta la referencia para más detalles.
Feature: Labels
@critical
@allure.label.owner:JohnDoe
@allure.link:https://dev.example.com/
@allure.issue:UI-123
@allure.tms:TMS-456
Scenario: Create new label for authorized user
When I open labels page
And I create label with title "hello"
Then I should see label with title "hello"
import allure
from behave import then
@then('I open labels page')
def step_impl(context):
allure.dynamic.link('https://dev.example.com/', name='Website')
allure.dynamic.issue('UI-123')
allure.dynamic.testcase('TMS-456')
...
Organizar pruebas
Como se describe en Mejorar la navegación en tu informe de pruebas, Allure admite múltiples formas de organizar las pruebas en estructuras jerárquicas. Allure Behave proporciona funciones para asignar los campos relevantes a las pruebas, ya sea mediante decoradores 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 comportamientos:
@allure.label.epic:WebInterface
Feature: Labels
@allure.label.story:Labels
Scenario: Create new label for authorized user
When I open labels page
And I create label with title "hello"
Then I should see label with title "hello"
Para especificar la ubicación de una prueba en la jerarquía basada en suites:
Feature: Labels
@allure.label.parentSuite:WebInterface
@allure.label.suite:EssentialFeatures
@allure.label.subSuite:Labels
Scenario: Create new label for authorized user
When I open labels page
And I create label with title "hello"
Then I should see label with title "hello"
Para especificar la ubicación de una prueba en la jerarquía basada en paquetes:
Feature: Labels
@allure.label.package:org.example
@allure.label.testClass:TestMyWebsite
@allure.label.testMethod:TestLabels()
Scenario: Create new label for authorized user
When I open labels page
And I create label with title "hello"
Then I should see label with title "hello"
Dividir una prueba en pasos
Allure Behave proporciona dos formas de crear pasos y subpasos: “pasos decorados” y “pasos de contexto”. Consulte la referencia.
import allure
from behave import then
@then("I open labels page")
def step_impl(context):
step1()
for val in ["val1", "val2", "val3"]:
step2(val)
@allure.step("Step 1")
def step1():
...
@allure.step("Step 2 (with value {val})")
def step2(val):
...
import allure
from behave import then
@then("I open labels page")
def step_impl(context):
with allure.step("Step 1"):
...
for val in ["val1", "val2", "val3"]:
with allure.step(f"Step 2 (with value {val})"):
...
Describir pruebas parametrizadas
Allure Behave puede mostrar los parámetros pasados a las pruebas a través de las tablas Examples
, consulte 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 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 específico.
Allure Behave proporciona varias formas de crear un adjunto, tanto a partir de archivos existentes como generados dinámicamente, consulta la referencia.
import allure
from behave import then
@then("I open labels page")
def step_impl(context):
...
with open('/path/to/image.png', 'rb') as png_file:
png_bytes = png_file.read()
allure.attach(png_bytes, name="img", attachment_type=allure.attachment_type.PNG)
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, behave solo ejecutará las pruebas listadas en este archivo.
Aquí tienes un ejemplo de cómo ejecutar pruebas según un archivo llamado testplan.json
:
export ALLURE_TESTPLAN_PATH=testplan.json
python -m behave
$Env:ALLURE_TESTPLAN_PATH = "testplan.json"
python -m behave
Información del entorno
Para la página principal del informe, puedes recopilar diversos detalles 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.
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 del informe. Si tienes propiedades que pueden ser diferentes para distintas pruebas, considera usar Pruebas parametrizadas.