基于unittest集成你的selenium2測(cè)試

前言

python單元測(cè)試框架(The Python Unit Testing Framework)簡(jiǎn)稱PyUnit,是JUnit的python版本,自python2.1版本后,PyUnit已經(jīng)成為了Python的標(biāo)準(zhǔn)庫(kù)。下面我們就如何把unitest應(yīng)用到python selenium2自動(dòng)化測(cè)試中進(jìn)行分享。

測(cè)試用例

單元測(cè)試是由一系列的測(cè)試用例(Test Cases)構(gòu)成。測(cè)試用例是被設(shè)置用來(lái)檢測(cè)獨(dú)立場(chǎng)景的集合。在PyUnit中,unittest模塊中的TestCase類代表測(cè)試用例。

TestCase類的實(shí)例是可以完全運(yùn)行所有的方法和可選的初始化(setUp)及清理(tearDown)方法的對(duì)象。

TestCase實(shí)例的測(cè)試代碼必須是包含一個(gè)或多個(gè)測(cè)試方法,簡(jiǎn)單說(shuō),它可以單獨(dú)運(yùn)行或與其他任意數(shù)量的用例共同運(yùn)行

簡(jiǎn)單示例

# 將以下代碼保存到first_webdriver.py中

#-*- coding:utf-8 -*-

__author__ = u'苦葉子'

from selenium import webdriver
import unittest
import HTMLTestRunner  
import sys
from time import sleep

reload(sys)
sys.setdefaultencoding("utf-8")

class BaiduTest(unittest.TestCase):
    """百度首頁(yè)搜索測(cè)試用例"""
    def setUp(self):
        self.driver = webdriver.Ie()
        self.driver.implicitly_wait(30)
        self.base_url = u"http://www.baidu.com"
        
    def test_baidu_search(self):
        driver = self.driver
        print u"開(kāi)始[case_0001]百度搜索"
        driver.get(self.base_url)
        
        # 驗(yàn)證標(biāo)題
        self.assertEqual(driver.title, u"百度一下,你就知道")
        driver.find_element_by_id("kw").clear()
        driver.find_element_by_id("kw").send_keys(u"開(kāi)源優(yōu)測(cè)")
        driver.find_element_by_id("su").click()
        sleep(3)
        
        # 驗(yàn)證搜索結(jié)果標(biāo)題
        self.assertEqual(driver.title, u"開(kāi)源優(yōu)測(cè)_百度搜索")
        
    def tearDown(self):
        self.driver.quit()
        

if __name__ == '__main__':
    testunit = unittest.TestSuite()
    testunit.addTest(BaiduTest('test_baidu_search'))    
    # 定義報(bào)告輸出路徑
    htmlPath = u"testReport.html"
    fp = file(htmlPath, "wb")
    
    runner = HTMLTestRunner.HTMLTestRunner(stream=fp, 
           title=u"百度測(cè)試", 
           description=u"測(cè)試用例結(jié)果")
    
    runner.run(testunit)
    
    fp.close()

關(guān)鍵代碼說(shuō)明

  1. 在上例代碼中,我們的測(cè)試用例BaiduTest繼承了unittest.TestCase。
  2. 在初始化方法setUp中,初始化了webdriver示例和隱性等待設(shè)置,并初始化了百度首頁(yè)url。該方法自動(dòng)執(zhí)行。
  3. 在清理方法中tearDown中,退出了webdriver。該方法自動(dòng)執(zhí)行。
  4. test_baidu_search方法是我們主要的測(cè)試方法,在該方法中進(jìn)行了一下動(dòng)作。
u1.png

主入口說(shuō)

  1. 先定義一個(gè)測(cè)試套件集,然后將用例集添加至套件中。
  2. 我們使用了unittest第三方測(cè)試報(bào)告模塊HTMLTestRunner(該模塊不是標(biāo)準(zhǔn)庫(kù),需要自己去下載,請(qǐng)參考前面幾篇的文章),用以自動(dòng)生產(chǎn)HTML格式的測(cè)試報(bào)告。

如何運(yùn)行上述代碼

# 將上述代碼保存至first_unit_test.py中
# 在命令行中輸入以下命令

python first_unit_test.py 

代碼組織說(shuō)明

u2.png

總結(jié)

今天我們就unittest怎么和selenium測(cè)試進(jìn)行結(jié)合做了初步的分享,請(qǐng)大家深入理解該示例,并實(shí)際動(dòng)手練習(xí)代碼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容