本文為簡單介紹,使用python自帶模塊unittest來進行單元測試
首先我們有一個需要測試的類,employee.py 定義了漲薪的方法。我們需要測試這個類的功能是否正確。
1 class Employee(): 2 3 def __init__(self,firstName,lastName,money): 4 self.firstName = firstName 5 self.lastName = lastName 6 self.money = money 7 8 def give_raise(self,add_money=5000): 9 self.money += add_money 10 return self.money
下面開始寫單元測試模塊 testEmployee.py
1 import unittest 2 from employee import Employee #導入需要測試的類 3 from HTMLTestRunner import HTMLTestRunner #導入生成HTML格式測試報告的模塊。 4 5 class TestEmployee(unittest.TestCase): #需繼承unittest.TestCase的類 6 7 def setUp(self): #每個測試用例執行前,需要做的操作 8 self.em = Employee('jade','chang',10000) #實例化一個雇員對象 9 10 def test_give_default_raise(self): #測試默認漲薪幅度,是否正確,用例名稱需以test開頭,否則不會運行。 11 self.assertEqual(self.em.give_raise(),15000) 12 13 def test_give_custom_raise(self): #測試自定義漲薪幅度 14 self.assertEqual(self.em.give_raise(2000),12000) 15 16 def report(): 17 filepath = r'C:\Users\Administrator\Desktop\RaiseMoney.html' 18 fp=open(filepath,'wb')
19 suite = unittest.TestSuite() #創建測試套件,將測試用例添加至套件中 20 suite.addTest(TestEmployee('test_give_default_raise')) 21 suite.addTest(TestEmployee('test_give_custom_raise'))
#生成測試報告 22 runner=HTMLTestRunner(stream=fp,title='雇員漲薪', description='雇員信息執行結果') 23 runner.run(suite) 24 unittest.main() 25 fp.close() 26 if __name__ == '__main__': 27 report()
運行成功后,生成的測試報告 RaiseMoney.html 如下:
點擊Detail,可展開每條測試用例的執行情況。

unittest常見的斷言方法:
| 斷言方法 | 描述 |
| assertEqual(a,b) | a == b |
| assertNotEqual(a,b) | a != b |
| assertTrue(x) | x 為True |
| assertFalse(x) | x 為False |
| assertIn(item, list) | item in list |
| assertNotIn(item, list) | item not in list |
備注:
HTMLTestRunner.py 下載鏈接:
鏈接:https://pan.baidu.com/s/1FIt_6wOVCF7ZxWSUD95OSA
提取碼:44hu
