您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源功能測(cè)試工具 > Selenium
Selenium自動(dòng)化測(cè)試用例設(shè)計(jì)注意事項(xiàng)(二)
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/1/28 10:52:45 ] 推薦標(biāo)簽:

  主頁(yè)的頁(yè)面對(duì)象可能會(huì)是這個(gè)樣子:

/**
 * Page Object encapsulates the Home Page
 */
public class HomePage {
 
        private Selenium selenium;
 
        public HomePage(Selenium selenium) {
                if (!selenium.getTitle().equals("Home Page of logged in user")) {
                        throw new IllegalStateException("This is not Home Page of logged in user, current page" +
                                        "is: " +selenium.getLocation());
                }
        }
 
        public HomePage manageProfile() {
                // Page encapsulation to manage profile functionality
                return new HomePage(selenium);
        }
 
        /*More methods offering the services represented by Home Page
        of Logged User. These methods in turn might return more Page Objects
        for example click on Compose mail button could return ComposeMail class object*/
 
}

  現(xiàn)在,使用上述兩個(gè)頁(yè)面對(duì)象的登錄測(cè)試代碼,如下所示。

/***
 * Tests login feature
 */
public class TestLogin {
 
        public void testLogin() {
                SignInPage signInPage = new SignInPage(selenium);
                HomePage homePage = signInPage.loginValidUser("userName", "password");
                Assert.assertTrue(selenium.isElementPresent("compose button"),
                                "Login was unsuccessful");
        }
}

  怎么樣使用頁(yè)面對(duì)象進(jìn)行設(shè)計(jì)有很大的靈活性,但也有一些基本的規(guī)則以保證得到測(cè)試代碼具有所需的可維護(hù)性。頁(yè)面對(duì)象本身不應(yīng)該被驗(yàn)證或斷言。這應(yīng)該是測(cè)試的一部分,并應(yīng)始終在測(cè)試代碼中去驗(yàn)證或斷言,而不要放在頁(yè)面對(duì)象內(nèi)。頁(yè)面對(duì)象將包含頁(yè)面展現(xiàn),方法的形式表示頁(yè)面提供的服務(wù),但不需要包含應(yīng)該在測(cè)試代碼中維護(hù)的代碼。

  的應(yīng)該存在頁(yè)面對(duì)象中的驗(yàn)證方法是,驗(yàn)證頁(yè)面、頁(yè)面上的重要元素,被正確的加載。這這個(gè)驗(yàn)證應(yīng)該在頁(yè)面初始化時(shí)進(jìn)行。在上面的例子中,SignInPage 和 HomePage 的構(gòu)造函數(shù)檢查了期望的頁(yè)面是否可用,是否準(zhǔn)備好接受測(cè)試代碼的請(qǐng)求。

  頁(yè)面對(duì)象并不一定要代表整個(gè)頁(yè)面。頁(yè)面對(duì)象設(shè)計(jì)模式可用于表示頁(yè)面上組件。在待測(cè)應(yīng)用上的一個(gè)頁(yè)面若有多個(gè)組件,每個(gè)組件對(duì)應(yīng)一個(gè)頁(yè)面對(duì)象可以提高可維護(hù)性。

  在測(cè)試時(shí),還會(huì)遇到其他的測(cè)試設(shè)計(jì)模式。有些人用一個(gè)頁(yè)面工廠模式來(lái)實(shí)例化頁(yè)面對(duì)象。討論所有的這些測(cè)試模式,超出了本文檔的的范圍。在這里,我們只為大家介紹概念,使讀者知道這些東西可以些什么。正如前面提到的,很多人都在博客上討論這個(gè)話題,我們鼓勵(lì)讀者搜索這些話題。

  數(shù)據(jù)驅(qū)動(dòng)測(cè)試

  數(shù)據(jù)驅(qū)動(dòng)測(cè)試是指相同的測(cè)試(或測(cè)試集)可以使用不同的數(shù)據(jù)多次執(zhí)行。這些數(shù)據(jù)集往往來(lái)自外部文件,如csv文件,文本文件,或者是從數(shù)據(jù)庫(kù)加載。數(shù)據(jù)驅(qū)動(dòng)測(cè)試是一種常用的自動(dòng)化測(cè)試技術(shù),使用不同的輸入對(duì)應(yīng)用程序進(jìn)行多次驗(yàn)證。當(dāng)測(cè)試被針對(duì)不同的數(shù)據(jù)進(jìn)行設(shè)計(jì)時(shí),所輸入的數(shù)據(jù)可以擴(kuò)展,基本上不需要修改測(cè)試代碼可以進(jìn)行更多的測(cè)試。

# Collection of String values
source = open("input_file.txt", "r")
values = source.readlines()
source.close()
# Execute For loop for each String in the values array
for search in values:
    sel.open("/")
    sel.type("q", search)
    sel.click("btnG")
    sel.waitForPageToLoad("30000")
    self.failUnless(sel.is_text_present("Results * for " + search))

上一頁(yè)1234下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd