一:unittest是python自帶的一個單元測試框架,類似于java的junit,基本結構是類似的。
基本用法如下:
1.用import unittest導入unittest模塊
2.定義一個繼承自unittest.TestCase的測試用例類,如
class abcd(unittest.TestCase):
3.定義setUp和tearDown,這兩個方法與junit相同,即如果定義了則會在每個測試case執行前先執行setUp方法,執行完畢后執行tearDown方法。
4.定義測試用例,名字以test開頭,unittest會自動將test開頭的方法放入測試用例集中。
5.一個測試用例應該只測試一個方面,測試目的和測試內容應很明確。主要是調用assertEqual、assertRaises等斷言方法判斷程序執行結果和預期值是否相符。
6.調用unittest.main()啟動測試
7.如果測試未通過,則會顯示e,并給出具體的錯誤(此處為程序問題導致)。如果測試失敗則顯示為f,測試通過為.,如有多個testcase,則結果依次顯示。
一個單testcase的簡單的例子:
# -*- coding:UTF-8 -*-'''Created on 2015年3月24日@author: Administrator'''import unittestfrom selenium import webdriverimport timeclass TestCase1(unittest.TestCase): def setUp(self): self.driver=webdriver.Firefox() self.base_url="http://www.baidu.com" def tearDown(self): self.driver.quit() def testCase1(self): driver=self.driver driver.get(self.base_url) print "將窗口最大化" driver.maximize_window() time.sleep(10)if __name__ == "__main__": unittest.main()
一個多testcase的例子:
# -*- coding:UTF-8 -*-'''Created on @author: Administrator'''from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.common.action_chains import ActionChainsfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support.ui import Selectfrom selenium.common.exceptions import NoSuchElementException,/ NoAlertPresentExceptionimport HTMLTestRunner#form selenium.common.exceptions import NoAlertPresentExceptionimport unittest, time, reclass Baidu(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.implicitly_wait(30) self.base_url = "http://www.baidu.com/?tn=98012088_4_dg&ch=3" self.verificationErrors = [] self.accept_next_alert = True self.driver.get(self.base_url) def test_baidu_search(self): '''百度搜索''' driver = self.driver# driver.get(self.base_url + "/") try: driver.find_element_by_id("kw").send_keys("selenium webdriver") driver.find_element_by_id("su").click() except: driver.get_screenshot_as_file('D://workspace//python_prictise//src//error.png') time.sleep(2) driver.close() def test_baidu_set(self): '''百度新聞''' driver = self.driver driver.find_element_by_name("tj_trnews").click() self.assertEqual(driver.title,u'百度新聞搜索——全球最大的中文新聞平臺',"switch to baidu news faile!")# time.sleep(2) def is_element_present(self, how, what): try: self.driver.find_element(by=how, value=what) except NoSuchElementException: return False return True def is_alert_present(self): try: self.driver.switch_to_alert() except NoAlertPresentException: return False return True def close_alert_and_get_its_text(self): try: alert = self.driver.switch_to_alert() alert_text = alert.text if self.accept_next_alert: alert.accept() else: alert.dismiss() return alert_text finally: self.accept_next_alert = True def tearDown(self): self.driver.quit() self.assertEqual([], self.verificationErrors)if __name__ == "__main__": unittest.main()
新聞熱點
疑難解答