Exportar métricas
TIP
Esta página describe cómo exportar estadísticas de prueba, como el número de pruebas con cada estado o la duración de la ejecución. Para recopilar tus propias mediciones, como los tiempos de carga de página, consulta Métricas de rendimiento. En Allure Report 3, puedes exportar sus promedios junto con las estadísticas de prueba.
Allure Report puede escribir datos agregados de pruebas en archivos que pueden ser importados a InfluxDB o Prometheus para la creación de gráficas personalizadas. De forma predeterminada, los archivos se colocan en el subdirectorio export del directorio del reporte.
- Allure Report 2 escribe los archivos para cada reporte.
- Allure Report 3 escribe los mismos archivos cuando el plugin
metricsestá habilitado, con los mismos nombres de métricas excepto para las categorías predeterminadas. También puede enviar los datos a Prometheus Pushgateway o InfluxDB.
Habilitar la exportación en Allure Report 3
El plugin metrics está incluido en el paquete allure. Para habilitarlo, agrégalo a la sección plugins del archivo de configuración. Solo se ejecutan los plugins listados en esta sección, así que mantén el plugin del reporte que quieras generar, por ejemplo, awesome:
import { defineConfig } from "allure";
export default defineConfig({
plugins: {
awesome: {},
metrics: {},
},
});{
"plugins": {
"awesome": {},
"metrics": {}
}
}plugins:
awesome: {}
metrics: {}Con esta configuración, Allure escribe tanto export/prometheusData.txt como export/influxDbData.txt en el directorio del reporte, junto al reporte mismo.
Para escribir solo uno de los archivos, habilítalo explícitamente, por ejemplo, prometheus: true. Si no se configura ni prometheus ni influxdb, se escriben ambos archivos.
| Opción | Descripción | Valor predeterminado |
|---|---|---|
prometheus | true o un objeto con las opciones de Prometheus | Habilitado si ninguno está configurado |
influxdb | true o un objeto con las opciones de InfluxDB | Habilitado si ninguno está configurado |
performanceMetrics | Si es true, las métricas de rendimiento también se exportan | false |
failOnPushError | Si es true, la generación del reporte falla cuando falla el envío de los datos. De lo contrario, Allure solo imprime una advertencia | false |
pushTimeout | Tiempo de espera de una sola solicitud de envío, en milisegundos | 10000 |
Opciones de Prometheus
| Opción | Descripción | Valor predeterminado |
|---|---|---|
fileName | Ruta al archivo, relativa al directorio del reporte, o una ruta absoluta | export/prometheusData.txt |
labels | Etiquetas que se agregan a cada métrica: un objeto, como { team: "qa" }, o una cadena ya construida, como team="qa",env="ci". Si no se configura, Allure las toma de la variable de entorno ALLURE_PROMETHEUS_LABELS | Sin etiquetas |
pushgateway | Configuración para enviar las métricas a Prometheus Pushgateway | Sin envío |
Opciones de InfluxDB
| Opción | Descripción | Valor predeterminado |
|---|---|---|
fileName | Ruta al archivo, relativa al directorio del reporte, o una ruta absoluta | export/influxDbData.txt |
push | Configuración para enviar los datos a la API de escritura de InfluxDB | Sin envío |
Enviar los datos
Después de escribir los archivos, Allure puede enviar los mismos datos a Prometheus Pushgateway y a InfluxDB:
import { defineConfig } from "allure";
export default defineConfig({
plugins: {
awesome: {},
metrics: {
options: {
prometheus: {
labels: { team: "qa" },
pushgateway: {
url: "http://localhost:9091",
job: "allure",
grouping: { instance: "ci" },
},
},
influxdb: {
push: {
url: "http://localhost:8086",
org: "qa",
bucket: "allure",
tokenEnv: "INFLUXDB_TOKEN",
},
},
},
},
},
});{
"plugins": {
"awesome": {},
"metrics": {
"options": {
"prometheus": {
"labels": { "team": "qa" },
"pushgateway": {
"url": "http://localhost:9091",
"job": "allure",
"grouping": { "instance": "ci" }
}
},
"influxdb": {
"push": {
"url": "http://localhost:8086",
"org": "qa",
"bucket": "allure",
"tokenEnv": "INFLUXDB_TOKEN"
}
}
}
}
}
}plugins:
awesome: {}
metrics:
options:
prometheus:
labels:
team: qa
pushgateway:
url: http://localhost:9091
job: allure
grouping:
instance: ci
influxdb:
push:
url: http://localhost:8086
org: qa
bucket: allure
tokenEnv: INFLUXDB_TOKENEste ejemplo envía datos a un Pushgateway que no requiere autenticación y a InfluxDB 2.x, con el token de la API tomado de la variable de entorno INFLUXDB_TOKEN. Las tablas a continuación enumeran todas las opciones.
Recomendamos mantener los secretos en variables de entorno en lugar del archivo de configuración.
Opciones de Pushgateway
| Opción | Descripción | Valor predeterminado |
|---|---|---|
url | Dirección de Pushgateway. Obligatorio | |
job | Valor de la clave de agrupación job | allure |
grouping | Claves de agrupación adicionales, por ejemplo, { instance: "ci" } | |
authorizationEnv | Nombre de la variable de entorno con el valor del encabezado Authorization, si Pushgateway requiere autenticación. El valor debe incluir el esquema, por ejemplo, Basic dXNlcjpwYXNzd29yZA== para autenticación básica | Sin encabezado |
authorization | Valor del encabezado Authorization, configurado directamente en el archivo de configuración | Sin encabezado |
Cada envío reemplaza todas las métricas del grupo en Pushgateway, por lo que las métricas de ejecuciones anteriores no permanecen allí.
Opciones de envío a InfluxDB
| Opción | Descripción | Versión de InfluxDB |
|---|---|---|
url | Dirección de InfluxDB. Obligatorio | 2.x y 1.x |
org | Nombre u ID de la organización. Obligatorio con bucket | 2.x |
bucket | Bucket en el que escribir | 2.x |
tokenEnv | Nombre de la variable de entorno con el token de la API | 2.x |
token | Token de la API, configurado directamente en el archivo de configuración | 2.x |
db | Base de datos en la que escribir. Se usa si bucket no está configurado | 1.x |
username | Nombre de usuario para la autenticación | 1.x |
passwordEnv | Nombre de la variable de entorno con la contraseña | 1.x |
password | Contraseña, configurada directamente en el archivo de configuración | 1.x |
Exportar métricas de rendimiento
Si recopilas métricas de rendimiento, configura performanceMetrics: true para exportarlas también. Para cada clave de métrica, Allure exporta el valor promedio de la ejecución: en Prometheus, como launch_metric_<key>, con los puntos en la clave reemplazados por guiones bajos, y en InfluxDB, como un campo de la medición launch_metric con el nombre de la clave.
Mediciones de InfluxDB
El archivo export/influxDbData.txt contiene datos agregados de las pruebas en formato protocolo de línea para InfluxDB. Al importarlo, crea las siguientes mediciones.
| Medición | Etiquetas |
|---|---|
| Una etiqueta para cada posible estado de prueba: Cada valor representa el número de pruebas con el estado. |
|
Los valores de |
| Una etiqueta para cada categoría no vacía. El nombre de cada categoría se convierte en minúsculas y los espacios se reemplazan por guiones bajos, por ejemplo: Cada valor representa el número de pruebas en la categoría. |
|
|
| Una etiqueta para cada clave de métrica de rendimiento, solo si Cada valor representa el valor promedio de la métrica en la ejecución. |
Métricas de Prometheus
El archivo export/prometheusData.txt contiene datos agregados de las pruebas en formato basado en texto para Prometheus. Al importarlo, crea las siguientes métricas.
| Prefijo | Métricas |
|---|---|
| Una métrica para cada posible estado de prueba: Cada valor representa el número de pruebas con el estado. |
|
Los valores de |
| Una métrica para cada categoría no vacía. El nombre de cada categoría se convierte en minúsculas, los espacios se reemplazan por guiones bajos y se agrega el prefijo, por ejemplo: Cada valor representa el número de pruebas en la categoría. |
|
|
| Una métrica para cada clave de métrica de rendimiento, solo si Cada valor representa el valor promedio de la métrica en la ejecución. |
Nombres de categorías en Allure Report 3
Las categorías predeterminadas tienen nombres diferentes en Allure Report 2 y Allure Report 3, y lo mismo ocurre con sus métricas:
- Allure Report 2:
launch_problems_product_defectsylaunch_problems_test_defects; - Allure Report 3:
launch_problems_product_errorsylaunch_problems_test_errors.
Si tus gráficas usan los nombres de Allure Report 2, define categorías con estos nombres en la configuración de Allure Report 3:
import { defineConfig } from "allure";
export default defineConfig({
categories: {
rules: [
{ name: "Product defects", matchers: { statuses: ["failed"] } },
{ name: "Test defects", matchers: { statuses: ["broken"] } },
],
},
plugins: {
awesome: {},
metrics: {},
},
});{
"categories": {
"rules": [
{ "name": "Product defects", "matchers": { "statuses": ["failed"] } },
{ "name": "Test defects", "matchers": { "statuses": ["broken"] } }
]
},
"plugins": {
"awesome": {},
"metrics": {}
}
}categories:
rules:
- name: Product defects
matchers:
statuses: [failed]
- name: Test defects
matchers:
statuses: [broken]
plugins:
awesome: {}
metrics: {}