1、unittest Module中的斷言方法
assertEqual(a,b) #覈實a==b
assertNotEqual(a,b) #覈實a!=b
assertTrue(x) #覈實x爲True
assertFalse(x) #覈實x爲False
assertIn(item,list) #覈實item在list中
assertNotIn(item,list) #覈實item不在list中
2、unittest.TestCase類中包含方法setUp(),若在TestCase類中包含了方法setUp(),Python將先運行它,再運行各個以test_打頭的方法。這樣,在哪個測試方法中都可使用方法setUp()中創建的對象了。
3、運行測試用例時,每完成一個單元測試,Python都打印一個字符:測試通過打印一個句點;測試引發錯誤打印一個E;測試導致斷言失敗打印一個F。
這就是運行測試用例時,在書的第一行看到的句點和字符數量各不相同的原因。如果測試用例包含很多單元測試,需要運行很長時間,就可通過觀察這些結果來獲悉有多少測試通過了。
練習
class Employee():
"""收集僱員姓名和年薪的類"""
def __init__(self,last_name,first_name,annual_salary):
self.last_name=last_name
self.first_name=first_name
self.annual_salary=annual_salary
def give_raise(self,up=5000):
self.annual_salary+=up
import unittest
from salary import Employee
class TestEmployee(unittest.TestCase):
def setUp(self):
self.annual_salary=100000
self.last_name='zh'
self.first_name='jw'
self.employee=Employee(self.last_name,
self.first_name,
self.annual_salary)
def test_give_default_raise(self):
self.employee.give_raise(0)
self.assertEqual(self.annual_salary,self.employee.annual_salary)
def test_give_custom_raise(self):
self.employee.give_raise()
self.assertEqual(self.annual_salary+5000,self.employee.annual_salary)
unittest.main()