因为工作需要,这段时间在使用Cucumber + Watir webdriver + Ruby做网站的功能自动化测试。
第一步:搭建环境
A。安装ruby
下载ruby的exe安装文件并安装
下载ruby的devkit文件并安装
B。打开安装目录下的ruby》start command prompt with ruby窗口
安装cucumber
gem install cucumber
确定否安装成功cucumber -v,显示出cucumber的版本号时表明安装成功
安装Watir webdriver
gem install watir-webdriver
gem install rspec
第二步:构造cucumber运行目录
auto
|----features
|-----�N----Define_steps
|-----|-------------�N---defined_steps.rb(对feature文件进行解析,并调用对应的Actions.rb中的方法)
|-----�N----aaa.feature(测试用例,数量不限)
|----lib
|-----�N----Actions.rb(方法库)
详细介绍:
测试用例*.feature文件,用语言描述出测试用例的具体步骤,如
# language: zh-CN 功能: 登录管理 场景: 使用错误的用户名或密码登录会报错 假如进入51cto首页 并且点击登录链接 而且以错误帐号abc或错误密码111111登录 那么看到出错的文字信息
defined_steps.rb文件,对*.feature文件中的文字进行解析并调用Actions.rb文件中对应的方法,如
#encoding=UTF-8 #调用需要用到的库 begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end require 'cucumber/formatter/unicode' require 'watir-webdriver' require 'watir-webdriver-performance' #调用Actions.rb文件 $:.unshift(File.dirname(__FILE__) + '/../../lib') require 'Actions' #执行用例前需要做的工作 Before do #启动谷歌浏览器 $browser=Watir::Browser.new:chrome #将Actions.rb方法为载入内存 $autotest=Actions.new end #执行测试用例后需要做的工作 After do #关闭浏览器 $browser.close end # 假如,而且 Given /^进入51cto首页$/ do || $autotest.navigate_to() end Given /^以错误帐号(.*)或错误密码(.*)登录$/ do |username, password| $autotest.invalid_login_action(username, password) end Given /^点击(.*)链接$/ do |link_name| $autotest.click_link(link_name) end # 当 When /判断预期结果时/ do || sleep(3) end # 那么,并且 Then /^看到(.*)文字信息$/ do |information| $autotest.display_text(information) end
Actions.rb文件,测试用例执行时的方法库,如
#encoding=UTF-8 require 'watir-webdriver' $LOAD_PATH << File.dirname(__FILE__) class Actions #跳转页面 def navigate_to() #进入到社区首页 $browser.goto('http://www.51cto.com/') #确认出现登录链接,来判断页面加载完毕 $browser.link(:text, '登录').wait_until_present $browser.link(:text, '登录').flash end #错误用户名和密码登录 def invalid_login_action(username, password) #判读用户名输入域显示 $browser.text_field(:name, 'email').wait_until_present #输入用户名 $browser.text_field(:name, 'email').send_keys(username) #判断用户密码域显示 $browser.text_field(:name, 'passwd').wait_until_present #输入用户密码 $browser.text_field(:name, 'passwd').send_keys(password) #判断登录键显示 $browser.button(:name, 'button').wait_until_present #点击登录键 $browser.button(:name, 'button').click end #点击链接 def click_link(link_name) $browser.link(:text, link_name).wait_until_present $browser.link(:text, link_name).click sleep(1) end #判断内容是否在页面上显示 def display_text(information) $browser.span(:style, 'color:#FF0000;').wait_until_present $browser.span(:style, 'color:#FF0000;').flash end end
第三步:执行测试用例
1、打开命令行窗口,进入到feature文件的上级目录
2、输入cucumber\tfeature\xxx.feature按下回车后,用例即开始执行
本文出自 “156881887” 博客,谢绝转载!