2012-04-19 20 views
6

Soy nuevo en Cucumber and Ruby. Soy un analista de negocios acostumbrado a escribir requisitos y casos de prueba, y he leído sobre Pepino y Watir, pero estoy teniendo problemas para que funcione lo que necesito.Perfiles de pepino y Global Hooks para seleccionar el navegador

Voy a estar poniendo a prueba un conjunto de páginas web en Internet Explorer, Firefox y Chrome, y como los diferentes tipos de usuarios. Estoy escribiendo y etiquetando funciones, y haciendo perfiles en cucumber.yml para poder ejecutar pepino con -p para ejecutar solo las pruebas etiquetadas apropiadas para diferentes tipos de usuario.

Estoy creando diferentes objetos de página para poder iniciar sesión fácilmente como usuario Básico, usuario de Informes, usuario Editor, etc. Los archivos de características tendrán escenarios ligeramente diferentes y condiciones de aprobación/falla para cada tipo de usuario, y el step defs llamará a los objetos de página apropiados para iniciar sesión como esos tipos de usuario.

En lugar de duplicar las pruebas tres veces para abrir el navegador correcto con watir-webdriver, y en lugar de tener el navegador abierto y cerrado en cada escenario, quería hacer un enganche global en env.rb o hooks.rb para abrir el navegador una vez y solo una vez antes de ejecutar cualquier característica, y luego cerrarlo con y después de la declaración de los ganchos globales cuando todas las características se hayan ejecutado. Una vez más, estoy usando perfiles que llaman escenarios etiquetados para elegir qué pruebas ejecutar para cada tipo de usuario.

El problema que estoy teniendo es un paso antes de que, con sólo abrir el navegador. Sé cómo usar watir-webdriver para abrir cada navegador.

Lo que quería era poner enlaces globales en abrir un navegador antes de cualquier prueba. Así que en el env.rb iba a poner el navegador = Watir :: Navegador.nueva llamada.

Lo que quiero hacer es tener tres ganchos globales separados, uno para IE, Chrome y Firefox, y llamarlos según una condición pasada desde un perfil en el pepino.yml, pero no puedo obtenerlo trabajar. Intenté etiquetarlos, y eso no funcionó. ¿No puedes etiquetar ganchos globales? Lo intenté con una configuración if/then/else, pero tampoco funcionó.

Me gustaría ser capaz de pasar un parámetro o etiqueta de un perfil en cucumber.yml llamar a un solo enlace global, tales como:

basicuser_overviewtests_ie: --tags @basic @overview @ie 

basicuser_overviewtests_ff: --tags @basic @overview @firefox 

Basicuser_newpagetests_ie: --tags @basic @newpage @ie 

etc ... Los primeros dos etiquetas se referirían a los escenarios, el tercero al gancho env.rb correcto.

O, si pudiera pasar una variable a partir del perfil, que trabajaría también. Aunque no pude entender cómo podría usar una variable de entorno.

¿Echo de menos algo? ¿Es suficiente información para explicar el problema? ¡Gracias!


ACTUALIZACIÓN: Parte del problema parece ser que el pepino no reconoció la carpeta [ayuda] cuando estaba en el mismo nivel que la carpeta [funciones], que tenía que ser en [Ajustes]. La información de cuke que había dicho estaría bien al mismo nivel en lugar de las características internas. No es el caso.

Así que ahora puedo obtener mis tres ganchos globales para que los navegadores se ejecuten, pero el etiquetado no ayuda, todos se ejecutan a la vez incluso etiquetados para ejecutarse antes de las características etiquetadas @ie o con perfiles etiquetados solo para ejecutar @ es decir.

Respuesta

8

EDITAR: pp.147-148 de The Cucumber Book me lleva a creer que esto debería funcionar:

Before ('@ie') do 
    @browser = Watir::Browser.new :ie 
end 

Yo no lo he probado, pero que probablemente se podrían obtener lo que quería si quería pasar el navegador como una etiqueta.


No pude averiguar cómo leer las etiquetas tampoco, aunque creo que probablemente haya una manera de hacerlo. Lo actualizaré si lo encuentro en The Cucumber Book. Terminé usando variables de entorno. Así es como lo hice:

case ENV['BROWSER'] 
    when 'ie', 'Internet Explorer' 
    browser = Watir::Browser.new :ie 
    when 'ff', 'Firefox' 
    browser = Watir::Browser.new :ff 
    when 'chrome' 
    browser = Watir::Browser.new :chrome 
    when 'opera' 
    browser = Watir::Browser.new :opera 
    when 'debug' 
    debug_profile = Selenium::WebDriver::Firefox::Profile.new 
    debug_profile.add_extension 'features/support/firebug.xpi' 
    browser = Watir::Browser.new :firefox, :profile => debug_profile 
    else 
    browser = Watir::Browser.new :ie 
end 

Before do 
    @browser = browser 
end 

at_exit() do 
    browser.close 
end 

Entonces sólo tiene que pasar en BROWSER=<browser> en la línea de comandos. Para una discusión más profunda de lo que hice para usar las variables ENV, puede leer la publicación del blog que escribí here.

+0

¡Funcionó, gracias! Parece que estaba en el camino correcto: intenté trabajar con variables de entorno, pero no tenía la sintaxis correcta y pasé al etiquetado, que no funcionó del todo. Esto funciona exactamente como lo necesito, y la publicación de tu blog me ayudó mucho, es paralela al tipo de prueba que estoy haciendo. ¡Gracias de nuevo! –

+0

¡Genial! Me alegro de poder ayudar. Si aún no lo has hecho, recoge The Cucumber Book. Ha sido TAN útil para mí. –

Cuestiones relacionadas