基於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()

關鍵代碼說明

  1. 在上例代碼中,我們的測試用例BaiduTest繼承了unittest.TestCase。
  2. 在初始化方法setUp中,初始化了webdriver示例和隱性等待設置,並初始化了百度首頁url。該方法自動執行。
  3. 在清理方法中tearDown中,退出了webdriver。該方法自動執行。
  4. test_baidu_search方法是我們主要的測試方法,在該方法中進行了一下動作。

主入口說

  1. 先定義一個測試套件集,然後將用例集添加至套件中。
  2. 我們使用了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編碼問題

TAG:Selenium | Python | 自動化測試 |