Referencia de Allure RSpec
Estas son las funciones que puedes usar para integrar tus pruebas de RSpec con Allure.
Ten en cuenta que todas las funciones del módulo Allure
también están disponibles a través del objeto que RSpec pasa a cada prueba, como el argumento t
en el ejemplo siguiente.
describe 'Test my website' do
it 'test authentication' do |t|
t.description_html 'This test attempts to log into the website using a login and a password.'
# ...
end
end
Metadatos
Asigna la descripción, enlaces y otros metadatos de una prueba.
Description
Allure::description_html: (String html)
Establece la descripción de la prueba.
describe 'Test my website' do
it 'test authentication' do
Allure.description_html 'This test attempts to log into the website using a login and a password.'
# ...
end
end
Owner
Establece el propietario de la prueba.
describe 'Test my website' do
it 'test authentication' do
Allure.label "owner", 'John Doe'
# ...
end
end
Tag
Allure::tag: (String tag)
Establece los tags de la prueba.
Hay tres formas de agregar una etiqueta a tu prueba.
Desde el cuerpo de la prueba, llama a la función
Allure.tag()
.Agrega un símbolo a los metadatos de RSpec. Allure RSpec añadirá una etiqueta usando el nombre del símbolo, a menos que sea una de las etiquetas ignoradas.
Agrega un par clave-valor a los metadatos de RSpec. Allure RSpec añadirá una etiqueta usando el valor, a menos que la clave sea una de las etiquetas ignoradas o el valor sea falso. Esto es conveniente cuando declaras múltiples pruebas en un bucle y deseas agregar o no agregar una etiqueta en función de una condición, como en el ejemplo siguiente.
describe 'Test my website' do
it 'test authentication' do
Allure.tag 'Web interface'
Allure.tag 'Authentication'
# ...
end
end
describe 'Test my website' do
it 'test authentication', :'Web interface', :Authentication do
# ...
end
end
describe 'Test my website' do
auth_data = [
['johndoe', false],
['[email protected]', true],
]
auth_data.each do |login, using_email|
it "test authentication as #{login}", 'Using email': using_email do
# ...
end
end
end
Severity
severity: String
Establece la severidad de la prueba.
Por defecto, Allure RSpec usará el valor bajo la clave severity
en los metadatos de RSpec. La clave se puede cambiar en la configuración.
Los valores permitidos son: “trivial”, “minor”, “normal”, “critical”, and “blocker”.
describe 'Test my website' do
it 'test authentication', severity: 'critical' do
# ...
end
end
Label
Allure::label: (String name, String value)
Establece una etiqueta arbitraria para la prueba. Esta es la implementación subyacente para muchas otras funciones de Allure.
El primer argumento de la función es el nombre de la etiqueta. Puede ser cualquier cadena.
Puedes llamar a Allure.label()
varias veces para crear un arreglo de valores bajo el nombre dado.
describe 'Test my website' do
it 'test authentication' do
Allure.label 'my custom label', 'value'
# ...
end
end
Allure ID (Allure TestOps)
allure_id: String
Establece el ID de la prueba.
Este ID es utilizado por la función de “plan de pruebas” en Allure TestOps para seleccionar qué pruebas ejecutar. Allure RSpec no exporta el ID a los resultados de las pruebas.
describe 'Test my website' do
it 'test authentication', allure_id: '123' do
# ...
end
end
Link
issue: String
tms: String
Allure::add_link: (url: String, name: String?, type: String?)
Allure::issue: (String name, String url)
Allure::tms: (String name, String url)
Agrega un enlace relacionado con la prueba.
En la API de ejecución, puedes hacerlo llamando a la función Allure.add_link()
. El tipo
afecta el icono que se muestra junto al enlace en el informe de la prueba. Para mayor comodidad, Allure proporciona dos funciones abreviadas con tipos de enlace preseleccionados: Allure.issue()
y Allure.tms()
.
describe 'Test my website' do
it 'test authentication' do
Allure.add_link url: 'https://dev.example.com/', name: 'Website'
Allure.issue 'AUTH-123', 'https://issues.example.com/AUTH-123'
Allure.tms 'TMS-456', 'https://tms.example.com/TMS-456'
# ...
end
end
Alternativamente, puedes agregar enlaces de problemas y enlaces de TMS a través de identificadores cortos en los metadatos de RSpec. Para habilitar esto, necesitas especificar los patrones de enlace en la configuración. Allure RSpec usará los patrones para procesar los valores bajo claves específicas (por defecto issue
y tms
respectivamente, pero pueden ser cambiados en la configuración).
Suponiendo los patrones de enlace https://issues.example.org/{}
y https://tms.example.org/{}
, la prueba en el ejemplo siguiente tendrá un enlace de problema a https://issues.example.org/AUTH-123
y un enlace de TMS a https://tms.example.org/TMS-456
.
describe 'Test my website' do
it 'test authentication', issue: 'AUTH-123', tms: 'TMS-456' do
# ...
end
end
Si necesitas especificar más de un enlace de problema o más de un enlace de TMS para la misma prueba, utiliza claves con sufijos numéricos después de un guion bajo, por ejemplo: issue_1
, issue_2
, tms_1
, tms_2
, etc. Allure RSpec procesará cada uno de los valores como de costumbre, ignorando los sufijos de las claves.
describe 'Test my website' do
it 'test authentication', issue_1: 'AUTH-123', issue_2: 'AUTH-124' do
# ...
end
end
Jerarquía basada en el comportamiento
epic: String
feature: String
story: String
Allure::epic: (String epic)
Allure::feature: (String feature)
Allure::story: (String story)
Asigna nombres de épicas, funcionalidades o historias de usuario a una prueba, como parte de la jerarquía basada en comportamiento de Allure.
Puedes hacerlo mediante las funciones en la API de ejecución o especificando los metadatos de RSpec bajo ciertas claves. Las claves por defecto son epic
, feature
y story
, pero se pueden cambiar en la configuración.
describe 'Test my website' do
it 'test authentication' do
Allure.epic 'Web interface'
Allure.feature 'Essential features'
Allure.story 'Authentication'
# ...
end
end
describe 'Test my website' do
it 'test authentication',
epic: 'Web interface',
feature: 'Essential features',
story: 'Authentication' do
# ...
end
end
Jerarquía basada en la suite
Allure::suite: (String name)
Asigna los nombres de suite principal, suite o sub-suite a una prueba, como parte de la jerarquía basada en suites de Allure.
describe 'Test my website' do
it 'test authentication' do
Allure.label 'parentSuite' 'Web interface'
Allure.suite 'Essential features'
Allure.label 'subSuite', 'Authentication'
# ...
end
end
Pasos de prueba
AllureStepAnnotation::step: (name: String, status: Status?)
Allure::run_step: (String name) { (*any) -> untyped }
Allure::step: (name: String, status: Status) { (*any) -> untyped }
Define pasos de prueba.
Hay tres formas de definir un paso.
Pasos anotados
En una clase que extienda
AllureStepAnnotation
, define un método que contenga un paso de prueba y agrega la anotaciónstep
a este, con un argumento opcionalname
(por defecto el nombre del método). Cada vez que el método sea llamado durante la ejecución de la prueba, se creará un nuevo paso para el informe de la prueba. Si el método llama a otra función que también tiene el atributostep
, Allure Report creará un sub-paso dentro del paso actual.Pasos basados en bloques
Escribe un paso de prueba dentro de un bloque para la función
Allure.run_step()
. Si el bloque devuelve un valor,Allure.run_step()
lo devolverá sin modificación, y no afectará el informe.Pasos no operativos (no-op)
Si llamas a la función
Allure.step()
, Allure agregará un paso no operativo al informe. Esto permite un estilo de reporte tipo log dentro de una prueba o dentro de un paso más grande. Un paso no operativo termina inmediatamente después de que comienza y no puede tener sub-pasos.El segundo argumento opcional indica el estado que se mostrará para el paso en el informe. Los valores permitidos son:
:passed
(el valor por defecto),:failed
,:broken
,:skipped
, y:unknown
.
describe 'Test my website' do
it 'test authentication' do
Steps.step_1
Steps.step_2
end
end
class Steps
extend AllureStepAnnotation
step 'Step 1'
def self.step_1
step_1_1
step_1_2
end
step 'Step 1.1'
def self.step_1_1
# ...
end
step 'Step 1.2'
def self.step_1_2
# ...
end
step 'Step 2'
def self.step_2
step_2_1
step_2_2
end
step 'Step 2.1'
def self.step_2_1
# ...
end
step 'Step 2.2'
def self.step_2_2
# ...
end
end
describe 'Test my website' do
it 'test authentication' do
Allure.run_step 'Step 1' do
# ...
Allure.step name: 'Step 1.1', status: :passed
# ...
Allure.step name: 'Step 1.2', status: :passed
end
Allure.run_step 'Step 2' do
# ...
Allure.step name: 'Step 2.1', status: :passed
# ...
Allure.step name: 'Step 2.2', status: :passed
end
end
end
Pruebas parametrizadas
Allure::parameter: (String name, String value)
Con Allure RSpec, es muy fácil implementar el patrón de pruebas parametrizadas, es decir, ejecutar la misma lógica de prueba con diferentes datos de prueba. Para hacerlo, solo escribe la prueba dentro de un bucle y usa los parámetros variables tanto en su título como en su cuerpo.
Para mostrar un valor de parámetro en el informe de la prueba, pásalo a la función Allure.parameter()
.
describe 'Test my website' do
auth_data = [
['johndoe', 'qwerty'],
['[email protected]', 'qwerty'],
]
auth_data.each do |login, password|
it "Test authentication as '#{login}'" do
Allure.parameter 'Login', login
Allure.parameter 'Password', password
# ...
end
end
end
Attachments
Allure::add_attachment: (name: String, source: File | String, type: String, test_case: bool?)
Agrega un archivo adjunto con un name
dado.
El contenido se pasa en el argumento source
y puede ser una cadena de texto o un Archivo.
Para asegurar que el navegador web del lector muestre correctamente los archivos adjuntos, pasa el tipo de medio adecuado del contenido como type
. La clase Allure::ContentType
contiene algunos tipos de medios populares, o puedes usar una cadena personalizada, siempre que el navegador web lo entienda al ver el informe de la prueba.
Cuando estás dentro de un paso de prueba, la función agrega el archivo adjunto al paso actual por defecto. Para agregarlo al resultado de la prueba completa, pasa true
al argumento opcional test_case
.
describe 'Test my website' do
it 'test authentication' do
# ...
Allure.add_attachment name: 'Screenshot',
source: File.new('/path/to/image.png'),
type: Allure::ContentType::PNG
Allure.add_attachment name: 'Data',
source: 'This is the file content.',
type: Allure::ContentType::TXT
end
end