1. 程式人生 > 程式設計 >Python單元測試與測試用例簡析

Python單元測試與測試用例簡析

本文例項講述了Python單元測試與測試用例。分享給大家供大家參考,具體如下:

單元測試與測試用例

簡介

測試用例是一組單元測試,這些單元測試一起核實函式在各種情形下的行為都符合要求

要為函式編寫測試用例,可先匯入模組 unittest 以及要測試的函式,再建立一個繼承unittest.TestCase 的類,並編寫一系列方法對函式行為的不同方面進行測試

建立例項(對比接收到的名和姓是否符合要求)

1.先建立個name_function.py的檔案(檔名稱可以另取),接收名和姓並返回整潔的全名

def get_formatted_name(first,last,middle=''):
  '''生成整潔的姓名'''
  if middle:
    full_name=first+' '+middle+' '+last
  else:
    full_name=first+' '+last
  return full_name.title()

2.再建立個test_name_function.py的檔案,檢查name_function.py()在給定名和姓時能否正確地工作

import unittest
from name_function import get_formatted_name
class NamesTestCase(unittest.TestCase):
  """測試name_function.py"""
  def test_first_last_name(self):
    """能夠正確處理姓名麼?"""
    formatted_name = get_formatted_name('liu','wei' )
    self.assertEquals(formatted_name,'Liu Wei')
unittest.main()

上述程式碼思路:

  1. 匯入模組 unittest 和要測試的函式 get_formatted_name()
  2. 建立一個名為 NamesTestCase 的類(類的命名可任取,但最好讓它看起來與要測試的函式相關,幷包含字樣Test),用於包含一系列針對get_formatted_name()的單元測試。這個類必須繼承unittest.TestCase,這樣Python才知道如何執行你編寫的測試
  3. NamesTestCase只包含一個方法,我將這個方法命名為test_first_last_name(),我們執行test_name_function.py 時,所有以test_打頭的方法都將自動執行。在這個示例中,使用了實參‘liu'和‘wei'呼叫get_formatted_name()
    ,並將結果儲存到變數 formatted_name
  4. assertEquals()unittest類最有用的功能之一:一個斷言方法。斷言方法用來核實得到的結果與期望的結果一致。self.assertEquals(formatted_name,'Liu Wei') 的意思是:將formatted_name 的值同字串 'Liu Wei'進行比較
  5. 程式碼行unittest.main()讓Python執行這個檔案中的測試。

執行結果如下:

----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

第1句的句點表明有一個測試通過。接下來的一行指出Python運行了一個測試,消耗的時間不到0.001秒。最後的OK表明該測試用例中的所有單元測試都通過了。

關於Python相關內容感興趣的讀者可檢視本站專題:《Python函式使用技巧總結》、《Python面向物件程式設計入門與進階教程》、《Python資料結構與演算法教程》、《Python字串操作技巧彙總》、《Python編碼操作技巧總結》及《Python入門與進階經典教程》

希望本文所述對大家Python程式設計有所幫助。