運(yùn)行cucumber,一個(gè)新的瀏覽器被打開(kāi),顯示結(jié)果與(三)中相同。
對(duì)于擁有多個(gè)用戶角色的網(wǎng)站,比如又customer,administrator等,可分別對(duì)這些角色定義相應(yīng)的對(duì)象,再在step文件中應(yīng)用這些角色對(duì)象即可。
(七)用ruby的Module來(lái)封裝不同的行為功能
對(duì)于單個(gè)用戶來(lái)說(shuō),比如網(wǎng)上購(gòu)物網(wǎng)站的customer,既要購(gòu)物操作,又要能修改自己的profile,此時(shí)為了對(duì)這些不同的邏輯功能進(jìn)行組織,可引入ruby中的Module來(lái)進(jìn)行封裝,即將costomer的不同行為功能模塊封裝在不同的module中,然后在customer對(duì)象中include這些Module。為簡(jiǎn)單起見(jiàn),依然用Google搜索來(lái)進(jìn)行演示,此時(shí)可將搜索功能加入到Module中,定義搜索module(search-behavior.rb)如下:
復(fù)制代碼
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
復(fù)制代碼
在User對(duì)象中include該Module:
復(fù)制代碼
1require File.join(File.dirname(__FILE__), "search-behavior")
2class User
3include SearchBehavior
4def initialize
5@browser = Watir::Browser.new :chrome
6end
復(fù)制代碼
對(duì)step文件和feature文件均不用修改,運(yùn)行cucumber,一個(gè)新的瀏覽器被打開(kāi),顯示結(jié)果與(三)中相同。
(八)總結(jié)
我們可以在Cucumber對(duì)應(yīng)的step文件中直接訪問(wèn)Watir的API,這樣的確也能達(dá)到測(cè)試目的,但這樣的缺點(diǎn)在于缺少設(shè)計(jì),于是我們引入Page對(duì)象來(lái)封裝不同的頁(yè)面,引入用戶角色管理不同的用戶行為,再引入Module來(lái)組織不同的功能模塊,后重構(gòu)成了一個(gè)簡(jiǎn)單實(shí)用的自動(dòng)化測(cè)試框架。