运行cucumber,一个新的浏览器被打开,显示结果与(三)中相同。
对于拥有多个用户角色的网站,比如又customer,administrator等,可分别对这些角色定义相应的对象,再在step文件中应用这些角色对象即可。
(七)用ruby的Module来封装不同的行为功能
对于单个用户来说,比如网上购物网站的customer,既要购物操作,又要能修改自己的profile,此时为了对这些不同的逻辑功能进行组织,可引入ruby中的Module来进行封装,即将costomer的不同行为功能模块封装在不同的module中,然后在customer对象中include这些Module。为简单起见,依然用Google搜索来进行演示,此时可将搜索功能加入到Module中,定义搜索module(search-behavior.rb)如下:
复制代码
1module SearchBehavior
2
3def visit_google
4@page = GooglePage.new(@browser)
5end
6
7def search_text text
8@page.search text
9end
10
11def assert_text_exist text
12@page.has_text text
13end
14
15end
复制代码
在User对象中include该Module:
复制代码
1require File.join(File.dirname(__FILE__), "search-behavior")
2class User
3include SearchBehavior
4def initialize
5@browser = Watir::Browser.new :chrome
6end
复制代码
对step文件和feature文件均不用修改,运行cucumber,一个新的浏览器被打开,显示结果与(三)中相同。
(八)总结
我们可以在Cucumber对应的step文件中直接访问Watir的API,这样的确也能达到测试目的,但这样的缺点在于缺少设计,于是我们引入Page对象来封装不同的页面,引入用户角色管理不同的用户行为,再引入Module来组织不同的功能模块,后重构成了一个简单实用的自动化测试框架。