Eric書中《Python編程從入門到實踐中的一個例子》。編程
首先定義了一個測試函數:函數
namefunction.py #-*- coding:cp936 -*- def get_formmed_name(first, last): """該函數根據姓和名生成一個完整的姓名""" full_name = first + ' ' + last return full_name.title()
而後編寫了一個測試該函數的模塊:單元測試
#-*- coding:cp936 -*- from name_function import get_formmed_name """該文件用來測試姓名生成函數""" print "Enter 'q' to quit any time." while True: first = raw_input("\nEnter first name:") if first == 'q': break last = raw_input("Enter last name:") if last == 'q': break formatted_name = get_formmed_name(first,last) print "Formmated name:",formatted_name
經過測試,name_function中的函數能夠實現其功能。測試
最後是單元測試和測試用例的編寫。ui
test_name_function.pyspa
# coding:utf-8 import unittest from name_function import get_formmed_name class NamesTestCase(unittest.TestCase): """測試name_function.py""" def test_first_last_name(self): """可以正確處理像Janis Joplin這樣的姓名嗎?""" formatted_name = get_formmed_name('janis','joplin') self.assertEqual(formatted_name,'Janis Joplin') #注意這個地方,我在Python 2.7的版本中直接調用書上的主函數unittest.main()時程序沒法經過,而改用如下調用方式便可 if __name__ == '__main__': unittest.main()
經過對以上單元測試模塊分析:code
導入單元測試類unittest
導入要測試的函數,本例爲name_function模塊中的get_formatted_name() 函數
建立一個繼承於unittest.TestCase的類
在類中定義一系列方法對函數的行爲進行不一樣方面的測試,須要注意的是一個測試用例應該只測試一個方面,測試目的和測試內容應很明確。主要是調用assertEqual、assertRaises等斷言方法判斷程序執行結果和預期值是否相符。
orm