es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La ejecución del terminal muestra los pasos .rb antes de los pasos del escenario .feature.

Descripción del problema:

Estoy teniendo un “problema” al crear automatización de Cucumber con Ruby. Mi terminal muestra los pasos .rb antes que los pasos del escenario .feature, lo cual es realmente molesto para la legibilidad.

Información:
Ruby: 3.0.3p157
Terminal: Git 2.34.1
Cucumber: 7.1.0

Mi archivo de características contiene:

@home_screen
Feature: Pruebas para la funcionalidad de la pantalla de inicio

@default
  Scenario: Los valores predeterminados en la pantalla de inicio son Pie y Centímetro
    Given Aterrizo en la pantalla de inicio
    Then el valor del selector de unidad izquierdo debería ser 'Pie'
    And el valor del selector de unidad derecho debería ser 'Centímetro'

Scenario: El botón "Mostrar todo" debería estar habilitado al iniciar
    Given Aterrizo en la pantalla de inicio
    Then el botón "Mostrar todo" está habilitado
    When Presiono el botón "Limpiar"
    Then el botón "Mostrar todo" está deshabilitado

@conversions
  Scenario Outline: Verificar las conversiones predeterminadas
    Given Aterrizo en la pantalla de inicio
    When Escribo <target> en el campo destino
    Then Debería ver <result> como el resultado

  Examples:
  | target | result |
  | 1      | 12     |
  | 2      | 24     |
  | 3      | 36     |
  | 9      | 106    |

Mis definiciones de pasos contienen:

Given('Aterrizo en la pantalla de inicio') do
  puts 'Estoy en la pantalla de inicio'
end

Then('el valor del selector de unidad izquierdo debería ser {string}') do |string|
  puts "El valor del selector de unidad izquierdo es #{string}"
end

And('el valor del selector de unidad derecho debería ser {string}') do |string|
  puts "El valor del selector de unidad derecho es #{string}"
end

When('Presiono el botón "Limpiar"') do
  puts 'Se presionó el botón "Limpiar"'
end

When('Escribo {int} en el campo destino') do |target|
  puts "El objetivo es: #{target}."
end

Then(/el botón "Mostrar todo" está (habilitado|deshabilitado)/) do |state|
  state == 'habilitado' ? puts('El botón está habilitado') : puts('El botón está deshabilitado')
end

Then('Debería ver {int} como el resultado') do |result|
  puts "El resultado es: #{result}."
end

Ejecución en la terminal de un escenario:

Ejecución en la terminal de un escenario

Salida esperada:

Salida esperada

¡Gracias por tu tiempo!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución:

    Para solucionar este problema y hacer que la terminal muestre los pasos del escenario .feature antes que los pasos del archivo .rb, puedes agregar la opción --order rand a la línea de comandos de Cucumber. Esto hará que el orden de ejecución de los escenarios y pasos sea aleatorio, provocando que los pasos del escenario se muestren antes que las definiciones de pasos.

    El comando modificado se vería así:

    cucumber features/ --order rand
    

    Puedes agregar esta opción a tu Rakefile o script de shell si los utilizas para ejecutar tu suite de pruebas.

Comments are closed.