Cucumber testing

2,275 views
2,184 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,275
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Cucumber testing

  1. 1. Cucumber Testing Installation1. Add the gems dependencies in your application’s Gemfile, for group :test only: Gemfile1 group :test do23 # RSpec4 gem rspec gem rspec-rails56 # Cucumber7 gem cucumber-rails, :require => false8 gem database_cleaner910 end112. Run the bundle command to install the gems: bundle install3. If this is the first time you run tests on your application, don’t forget tofirst prepare your test database:rake db:migraterake db:test:load4. Those frameworks need little configuration files. They can be generated withthe following commands:
  2. 2. > rails generate rspec:installcreate .rspeccreate speccreate spec/spec_helper.rb and> rails generate cucumber:installcreate config/cucumber.ymlcreate script/cucumberchmod script/cucumbercreate features/step_definitionscreate features/supportcreate features/support/env.rbexist lib/taskscreate lib/tasks/cucumber.rakegsub config/database.ymlgsub config/database.ymlforce config/database.yml 5. Finally you can write a nice test. This tutorial will make use of Cucumber to write and run tests. Therefore I define my test in my own language in a features file: features/test_cases/simple.feature1 Feature: Simple testing23 Scenario: Arriving on home page gives a 200 response code4 When I visit the page "/" Then the response code should be "200"5
  3. 3. And I can run my test by invoking cucumber:
  4. 4. > cucumberUsing the default profile...Feature: Simple testingScenario: Arriving on home page gives a 200 response code # featurestest_casessimple.feature:3When I visit the page "/" #featurestest_casessimple.feature:4Undefined step: "I visit the page "/"" (Cucumber::Undefined)featurestest_casessimple.feature:4:in `When I visit the page "/"Then the response code should be "200" # featurestest_casessimple.feature:5Undefined step: "the response code should be "200"" (Cucumber::Undefined)featurestest_casessimple.feature:5:in `Then the response code should be "200"1 scenario (1 undefined)2 steps (2 undefined)0m0.020sYou can implement step definitions for undefined steps with these snippets:When /^I visit the page "(.*?)"$/ do |arg1|pending # express the regexp above with the code you wish you hadendThen /^the response code should be "(.*?)"$/ do |arg1|pending # express the regexp above with the code you wish you hadend
  5. 5. You can see a colored output (on Windows, you will need to use Ansicon to seethe colors), much more sexier than usual Test::Unit output.Currently our test is failing, as Cucumber does not know yet what to do with ourlanguage. As you can see at the end of the output, it suggests a nice codesnippet with a regular expression to implement the missing definition.This is a real time saver: all you have to do is copy/paste this code snippet toyour definition file, and implement it.7. So next step is to implement the missing definition, done in a definitionsfile: features/step_definitions/main_steps.rbWhen /^I visit the page "(.*?)"$/ do |iPagePath|visit iPagePathendThen /^the response code should be "(.*?)"$/ do |iResponseCode|page.status_code.should == iResponseCode.to_iendNow you can re-run your cucumber test suite and admire the result:
  6. 6. > cucumberUsing the default profile...Feature: Simple testingScenario: Arriving on home page gives a 200 response code # featurestest_casessimple.feature:3When I visit the page "/" # features/step_definitions/main_steps.rb:1Then the response code should be "200" # features/step_definitions/main_steps.rb:51 scenario (1 passed)2 steps (2 passed)0m2.551s With these you can already write a great test suite, very easy to maintain with reusable and understandable sentences in your tests. Developers working after you on your project will thank you!

×