前言
python單元測試框架(The Python Unit Testing Framework)簡稱PyUnit耿眉,是JUnit的python版本蚁袭,自python2.1版本后,PyUnit已經(jīng)成為了Python的標(biāo)準(zhǔn)庫阱当。下面我們就如何把unitest應(yīng)用到python selenium2自動(dòng)化測試中進(jìn)行分享俏扩。
測試用例
單元測試是由一系列的測試用例(Test Cases)構(gòu)成。測試用例是被設(shè)置用來檢測獨(dú)立場景的集合弊添。在PyUnit中录淡,unittest模塊中的TestCase類代表測試用例。
TestCase類的實(shí)例是可以完全運(yùn)行所有的方法和可選的初始化(setUp)及清理(tearDown)方法的對象油坝。
TestCase實(shí)例的測試代碼必須是包含一個(gè)或多個(gè)測試方法嫉戚,簡單說,它可以單獨(dú)運(yùn)行或與其他任意數(shù)量的用例共同運(yù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):
"""百度首頁搜索測試用例"""
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"開始[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"開源優(yōu)測")
driver.find_element_by_id("su").click()
sleep(3)
# 驗(yàn)證搜索結(jié)果標(biāo)題
self.assertEqual(driver.title, u"開源優(yōu)測_百度搜索")
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"百度測試",
description=u"測試用例結(jié)果")
runner.run(testunit)
fp.close()
關(guān)鍵代碼說明
- 在上例代碼中彬檀,我們的測試用例BaiduTest繼承了unittest.TestCase。
- 在初始化方法setUp中瞬女,初始化了webdriver示例和隱性等待設(shè)置窍帝,并初始化了百度首頁url。該方法自動(dòng)執(zhí)行诽偷。
- 在清理方法中tearDown中盯桦,退出了webdriver。該方法自動(dòng)執(zhí)行渤刃。
- test_baidu_search方法是我們主要的測試方法拥峦,在該方法中進(jìn)行了一下動(dòng)作。
主入口說
- 先定義一個(gè)測試套件集卖子,然后將用例集添加至套件中略号。
- 我們使用了unittest第三方測試報(bào)告模塊HTMLTestRunner(該模塊不是標(biāo)準(zhǔn)庫,需要自己去下載洋闽,請參考前面幾篇的文章),用以自動(dòng)生產(chǎn)HTML格式的測試報(bào)告玄柠。
如何運(yùn)行上述代碼
# 將上述代碼保存至first_unit_test.py中
# 在命令行中輸入以下命令
python first_unit_test.py
代碼組織說明
總結(jié)
今天我們就unittest怎么和selenium測試進(jìn)行結(jié)合做了初步的分享,請大家深入理解該示例诫舅,并實(shí)際動(dòng)手練習(xí)代碼羽利。