Rails项目中使用Cucumber测试
2015-02-01 15:11
337 查看
以前只是知道,自己在一个项目中自己该怎么去写一个cucumber测试,甚至有时候自己也不知道,该怎么写,从来没有自己
从头到尾在自己的项目中去使用cucumber测试。通过参加这次活动,算是有了一个基本的认识。
BDD(Behavier Driven Developer)现在时敏捷开发领域一种非常流行的开发模式,在敏捷实践中用户故事地图是在开始
一个项目之前要基本确定的一个简单地用户需求,他需要将一个完整的项目拆分成很多个完整的用户故事,及Story,对于这么
多用户故事,在实际开发中会会有开发人员和BA一起确定一个开发的先后顺序。而针对每一个具体的Story,会有BA写一个或者
多个AC,对于每一个AC其实就是一个完整的cucumber测试用例,当然这些都是敏捷实践领域的知识,今天我们就来简单地介绍一下如何在自己的项目中引入cucumber测试(只是针对Web开发,其实后台的程序也可以使用cucumber来测试,道理是一样的。)
**声明我们今天测试的ruby-china社区的登录**
Step1:在Gemfile文件中引入一下几个Gem包:
gem 'capybara'
gem 'cucumber'
gem 'selenium-webdriver'
gem 'site_prism'
gem 'require_all'
Step2:运行`bundle install`
Step3:在项目目录下创建一个features/support目录,在里边添加一个env.rb的文件,并且在文件中添加以下代码:
require 'capybara'
require 'capybara/cucumber'
require 'selenium-webdriver'
require 'site_prism'
require 'require_all'
require_all 'lib/pages'
Capybara.register_driver :selenium do |app|
options = {
:browser => :firefox
}
Capybara::Selenium::Driver.new(app, options)
end
Capybara.run_server = false
Capybara.default_wait_time = 30
Capybara.app_host = 'https://ruby-china.org/account/sign_in'
Capybara.default_driver = :selenium
Step4:在features目录下创建一个step_definitions目录,在该目录下添加login_steps.rb文件,并且在文件中添加以下代码:
Given(/^I login with "(.*?)" with "(.*?)"$/) do |email, password|
@login_page = LoginPage.new
@login_page.load
@login_page.login(email, password)
end
Then(/^I should see "(.*?)"$/) do |username|
expect(page).to have_text(username)
end
Then(/^I should see "(.*?)" on login page$/) do |error_message|
expect(@login_page.login_failed_error.text).to eq error_message
end
Step5: 在lib/pages目录下添加login_page.rb文件,并且在文件中添加以下代码:
class LoginPage < SitePrism::Page
set_url '/'
element :login_failed_error, 'section.login-panel div.alert'
element :username, '#user_login'
element :password_input, '#user_password'
element :login_button, 'input[name="commit"]'
def login(user, password)
username.set user
password_input.set password
login_button.click
end
end
到此一个基本的cucumber测试基本已经搭建完成,现在试着在你的doc命令下进去到你的项目目录下,试着运行`cucumber`
见证奇迹的时刻。
从头到尾在自己的项目中去使用cucumber测试。通过参加这次活动,算是有了一个基本的认识。
BDD(Behavier Driven Developer)现在时敏捷开发领域一种非常流行的开发模式,在敏捷实践中用户故事地图是在开始
一个项目之前要基本确定的一个简单地用户需求,他需要将一个完整的项目拆分成很多个完整的用户故事,及Story,对于这么
多用户故事,在实际开发中会会有开发人员和BA一起确定一个开发的先后顺序。而针对每一个具体的Story,会有BA写一个或者
多个AC,对于每一个AC其实就是一个完整的cucumber测试用例,当然这些都是敏捷实践领域的知识,今天我们就来简单地介绍一下如何在自己的项目中引入cucumber测试(只是针对Web开发,其实后台的程序也可以使用cucumber来测试,道理是一样的。)
**声明我们今天测试的ruby-china社区的登录**
Step1:在Gemfile文件中引入一下几个Gem包:
gem 'capybara'
gem 'cucumber'
gem 'selenium-webdriver'
gem 'site_prism'
gem 'require_all'
Step2:运行`bundle install`
Step3:在项目目录下创建一个features/support目录,在里边添加一个env.rb的文件,并且在文件中添加以下代码:
require 'capybara'
require 'capybara/cucumber'
require 'selenium-webdriver'
require 'site_prism'
require 'require_all'
require_all 'lib/pages'
Capybara.register_driver :selenium do |app|
options = {
:browser => :firefox
}
Capybara::Selenium::Driver.new(app, options)
end
Capybara.run_server = false
Capybara.default_wait_time = 30
Capybara.app_host = 'https://ruby-china.org/account/sign_in'
Capybara.default_driver = :selenium
Step4:在features目录下创建一个step_definitions目录,在该目录下添加login_steps.rb文件,并且在文件中添加以下代码:
Given(/^I login with "(.*?)" with "(.*?)"$/) do |email, password|
@login_page = LoginPage.new
@login_page.load
@login_page.login(email, password)
end
Then(/^I should see "(.*?)"$/) do |username|
expect(page).to have_text(username)
end
Then(/^I should see "(.*?)" on login page$/) do |error_message|
expect(@login_page.login_failed_error.text).to eq error_message
end
Step5: 在lib/pages目录下添加login_page.rb文件,并且在文件中添加以下代码:
class LoginPage < SitePrism::Page
set_url '/'
element :login_failed_error, 'section.login-panel div.alert'
element :username, '#user_login'
element :password_input, '#user_password'
element :login_button, 'input[name="commit"]'
def login(user, password)
username.set user
password_input.set password
login_button.click
end
end
到此一个基本的cucumber测试基本已经搭建完成,现在试着在你的doc命令下进去到你的项目目录下,试着运行`cucumber`
见证奇迹的时刻。
相关文章推荐
- Ubuntu上使用autotest做Rails项目的自动测试 - autotest安装和测试
- rails3使用cucumber和rspec进行测试
- Rspec在Rails项目中的使用
- 在项目中使用Hibernate进行大数据量的性能测试,有一些总结
- C++ VS 2008中ATL的创建,使用。并在C++项目以及C#项目中进行调用测试
- 自动化测试项目——list的使用
- webservice项目开发测试 使用xfire框架
- 使用selenim作为项目测试框架,适用asp.net c# 网站测试
- asp.net中使用Sqlserver事务时的体会,借鉴测试项目的脚本控制思想...
- rails 3 使用 cucumber 和rspec 進行 測試
- rails项目 插件夹具测试
- Maven学习(四)- 使用Maven构建Web项目-测试
- 在项目中使用Hibernate进行大数据量的性能测试,有一些总结(转贴)
- 使用JMeter测试Java项目
- 使用Ant构建web项目 从编译到测试 生成测试报告 打包 邮件发送 远程下载tomcat 部署运行一条龙服务之ant脚本
- ZendStudio使用PHPUnit测试项目 ?求助
- Ruby on rails开发从头来(windows)(二十八)- 使用Rake运行测试
- 使用JMeter测试Java项目
- 使用selenium进行web测试项目框架
- Ruby on rails开发从头来(windows)(二十八)- 使用Rake运行测试