首页 > 编程 > Python > 正文

详解python单元测试框架unittest

2020-02-15 22:06:39
字体:
来源:转载
供稿:网友

一: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()            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表