« Previous -
Version 18/40
(diff) -
Next » -
Current version
Guillermo Gómez, 02/17/2011 06:48 pm
Cucumber¶
Behaviour Driven Development (BDD).
Instalación¶
# yum install rubygem-cucumber
BDD ejemplo¶
$ mkdir cucumber-1 $ cd cucumber-1 $ mkdir features $ mkdir features/step_definitions
Describa el comportamiento en texto plano¶
Cucumber es una herramienta que ejecuta descripciones funcionales en texto plano como pruebas automatizadas. El lenguaje que Cucumber entiende se conoce como Gherkin.
1# language: es
2Característica: Buscar en cursos
3 Con la finalidad de asegurar una mejor utilización de los cursos
4 Los estudiantes potenciales deben ser capaces de realizar búsqueda en los cursos
5
6Escenario: Búsqueda por tema
7 Dado que hay cursos que no tienen el tema "biología"
8 Y que hay 2 cursos , A001, B205, que cada uno tiene "biología" como uno de sus temas
9 Cuando yo busque por "biología"
10 Entonces yo debería ver los siguientes cursos:
11 | Id. del curso |
12 | A001 |
13 | B205 |
Corrida de prueba¶
$ cucumber features/f1.feature
# language: es
Característica: Buscar en cursos
Con la finalidad de asegurar una mejor utilización de los cursos
Los estudiantes potenciales deben ser capaces de realizar búsqueda en los cursos
Escenario: Búsqueda por tema # features/f1.feature:6
Dado que hay cursos que no tienen el tema "biología" # features/f1.feature:7
Y que hay 2 cursos , A001, B205, que cada uno tiene "biología" como uno de sus temas # features/f1.feature:8
Cuando yo busque por "biología" # features/f1.feature:9
Entonces yo debería ver los siguientes cursos: # features/f1.feature:10
| Id. del curso |
| A001 |
| B205 |
1 scenario (1 undefined)
4 steps (4 undefined)
0m0.007s
You can implement step definitions for undefined steps with these snippets:
Dado /^que hay cursos que no tienen el tema "([^"]*)"$/ do |arg1|
pending # express the regexp above with the code you wish you had
end
Dado /^que hay (\d+) cursos , A(\d+), B(\d+), que cada uno tiene "([^"]*)" como uno de sus temas$/ do |arg1, arg2, arg3, arg4|
pending # express the regexp above with the code you wish you had
end
Cuando /^yo busque por "([^"]*)"$/ do |arg1|
pending # express the regexp above with the code you wish you had
end
Entonces /^yo debería ver los siguientes cursos:$/ do |table|
# table is a Cucumber::Ast::Table
pending # express the regexp above with the code you wish you had
end
If you want snippets in a different programming language, just make sure a file
with the appropriate file extension exists where cucumber looks for step definitions.
Escriba la definición de paso en Ruby¶
- http://gem-session.com/2010/04/never-write-a-cucumber-step-definition-again-with-cucumber-factory
- https://gist.github.com/414051
Cree un subdirectorio step_definitions y un primer archivo de definiciones de paso como features/step_definitions/basic_steps.rb .
1Dado /^que hay cursos que no tienen el tema "([^"]*)"$/ do |arg1|
2 pending # express the regexp above with the code you wish you had
3end
4
5Dado /^que hay (\d+) cursos , A(\d+), B(\d+), que cada uno tiene "([^"]*)" como uno de sus temas$/ do |arg1, arg2, arg3, arg4|
6 pending # express the regexp above with the code you wish you had
7end
8
9Cuando /^yo busque por "([^"]*)"$/ do |arg1|
10 pending # express the regexp above with the code you wish you had
11end
12
13Entonces /^yo debería ver los siguientes cursos:$/ do |table|
14 # table is a Cucumber::Ast::Table
15 pending # express the regexp above with the code you wish you had
16end
Nueva corrida¶
$ cucumber features/f1.feature
# language: es
Característica: Buscar en cursos
Con la finalidad de asegurar una mejor utilización de los cursos
Los estudiantes potenciales deben ser capaces de realizar búsqueda en los cursos
Escenario: Búsqueda por tema # features/f1.feature:6
Dado que hay cursos que no tienen el tema "biología" # features/step_definitions/f1-sd.rb:2
TODO (Cucumber::Pending)
./features/step_definitions/f1-sd.rb:3:in `/^que hay cursos que no tienen el tema "([^"]*)"$/'
features/f1.feature:7:in `Dado que hay cursos que no tienen el tema "biología"'
Y que hay 2 cursos , A001, B205, que cada uno tiene "biología" como uno de sus temas # features/step_definitions/f1-sd.rb:6
Cuando yo busque por "biología" # features/step_definitions/f1-sd.rb:10
Entonces yo debería ver los siguientes cursos: # features/step_definitions/f1-sd.rb:14
| Id. del curso |
| A001 |
| B205 |
1 scenario (1 pending)
4 steps (3 skipped, 1 pending)
0m0.008s
Note el TODO, esto es lo primero que hay que implementar, excelente, Cucumber nos está diciendo qué es lo debemos implementar. Comencemos!
