基於unittest集成你的selenium2測試
前言
python單元測試框架(The Python Unit Testing Framework)簡稱PyUnit,是JUnit的python版本,自python2.1版本後,PyUnit已經成為了Python的標準庫。下面我們就如何把unitest應用到python selenium2自動化測試中進行分享。
測試用例
單元測試是由一系列的測試用例(Test Cases)構成。測試用例是被設置用來檢測獨立場景的集合。在PyUnit中,unittest模塊中的TestCase類代表測試用例。
TestCase類的實例是可以完全運行所有的方法和可選的初始化(setUp)及清理(tearDown)方法的對象。
TestCase實例的測試代碼必須是包含一個或多個測試方法,簡單說,它可以單獨運行或與其他任意數量的用例共同運行
簡單示例
# 將以下代碼保存到first_webdriver.py中#-*- coding:utf-8 -*-__author__ = u苦葉子from selenium import webdriverimport unittestimport HTMLTestRunner import sysfrom time import sleepreload(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) # 驗證標題 self.assertEqual(driver.title, u"百度一下,你就知道") driver.find_element_by_id("kw").clear() driver.find_element_by_id("kw").send_keys(u"開源優測") driver.find_element_by_id("su").click() sleep(3) # 驗證搜索結果標題 self.assertEqual(driver.title, u"開源優測_百度搜索") def tearDown(self): self.driver.quit()if __name__ == __main__: testunit = unittest.TestSuite() testunit.addTest(BaiduTest(test_baidu_search)) # 定義報告輸出路徑 htmlPath = u"testReport.html" fp = file(htmlPath, "wb") runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u"百度測試", description=u"測試用例結果") runner.run(testunit) fp.close()
關鍵代碼說明
- 在上例代碼中,我們的測試用例BaiduTest繼承了unittest.TestCase。
- 在初始化方法setUp中,初始化了webdriver示例和隱性等待設置,並初始化了百度首頁url。該方法自動執行。
- 在清理方法中tearDown中,退出了webdriver。該方法自動執行。
- test_baidu_search方法是我們主要的測試方法,在該方法中進行了一下動作。
主入口說
- 先定義一個測試套件集,然後將用例集添加至套件中。
- 我們使用了unittest第三方測試報告模塊HTMLTestRunner(該模塊不是標準庫,需要自己去下載,請參考前面幾篇的文章),用以自動生產HTML格式的測試報告。
如何運行上述代碼
# 將上述代碼保存至first_unit_test.py中# 在命令行中輸入以下命令python first_unit_test.py
代碼組織說明
總結
今天我們就unittest怎麼和selenium測試進行結合做了初步的分享,請大家深入理解該示例,並實際動手練習代碼。
推薦閱讀:
※Python built-in functions F&G
※通俗 Python 設計模式——外觀模式
※Python網路爬蟲實戰三例(附視頻講解)
※1.3從零開始學Scrapy爬蟲之python編碼問題