一: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()
新闻热点
疑难解答