python的單元測試框架unittest之TestCase


一、unittest工作原理

unittest最核心的四部分是:TestCase,TestSuite,TestRunner,TestFixture

TestFixture:簡單來說就是做一些測試過程中需要准備的東西,比如創建臨時的數據庫,文件和目錄等,其中setUp()和setDown()是最常用的方法;這里舉例以下,例如要測試百度搜索selenium這個場景,我們的測試固件可以這樣寫,setUp()里寫打開瀏覽器,瀏覽器最大化,和打開百度首頁等腳本代碼;在tearDown()里寫結束搜索后,退出並關閉瀏覽器的代碼。

test case(測試用例):unittest中管理的最小單元是測試用例,一個測試用例,包括測試固件,和具體測試業務的函數或者方法。一個測試用例中,測試固件可以不寫,但是至少有一個已test開頭的函數。unittest會自動化識別test開頭的函數是測試代碼,如果你寫的函數不是test開頭,unittest是不會執行這個函數里面的腳本的,這個千萬要記住,所有的測試函數都要test開頭,記住是小寫的哦

test suite:很簡單,就是很多測試用例的集合,叫測試套件,一個測試套件可以隨意管理多個測試用例。如果測試用例比作單個學生,測試套件就是好像是班級的概念。

test runner(測試執行器 ):test runner是一個用來執行加載測試用例,並執行用例,且提供測試輸出的一個組建。test runner可以加載test case或者test suite進行執行測試任務。

  整個的流程就是首先要寫好TestCase,然后由TestLoader加載TestCase到TestSuite,然后由TestTestRunner來運行TestSuite,運行的結果保存在TextTestReusult中,整個過程集成在unittest.main模塊中。

二、例子如下:

#導入unittest模塊,這是python自帶的單元測試框架,
import unittest
#必須繼承unittest.TestCase類
class test_unit(unittest.TestCase):
#必須有前置條件,不要為為什么,固定格式
def setUp(self):
print('這是前置條件')

#必須有后置條件,不要為為什么,固定格式
  def tearDown(self) :
print('這是后置條件')
#開始了測試用例,必須時test_開頭

  def test_case01(self):
        # print(self.add(4,9))
print('這是測試用例01')
def test_case02(self):
# print(self.add(5, 10))
print('這是測試用例02')
# def add(a,b):
# c=a+b;
# return c;
#運行方法必須用main()方法
if __name__=='__main__':
unittest.main()

學習unittest的簡單用法實例:
1. 新建一個testbaidu.py的文件
2. 導入unittest模塊
3. 當前測試類繼承unittest.TestCase,相當於當前利用unittest創建了一個test case,這個test case是能夠被unittest直接識別。
4. 寫setUP(),主要是打開瀏覽器和打開站點
5. 寫一個test_search()用例寫搜索的代碼
6. 寫tearDown(),主要是瀏覽器退出操作

腳本代碼:

import time

import unittest

from selenium import webdriver

class BaiduSearch(unittest.TestCase):

  def setUp(self):
  """
  測試固件的setUp()的代碼,主要是測試的前提准備工作
  return:
  """
    self.driver = webdriver.Chrome()
    self.driver.maximize_window()
    self.driver.implicitly_wait(8)
    self.driver.get("https://www.baidu.com")

  def test_baidu_search(self):
  """
  這里一定要test開頭,把測試邏輯代碼封裝到一個test開頭的方法里。
  :return:
  """
    self.driver.find_element_by_id('kw').send_keys('selenium')
    time.sleep(1)
    try:
      assert 'selenium' in self.driver.title
      print ('Test Pass.')
    except Exception as e:
      print ('Test Fail.', format(e))


  def tearDown(self):
  """
  測試結束后的操作,這里基本上都是關閉瀏覽器
  :return:
  """
    self.driver.quit()

if __name__ == '__main__':
  unittest.main()

 





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM