python中的單元測試可以使用doctest,unittest完成
1.doctest的使用
(1)寫入程式如下(cubetest.py):
測試用例寫在字元串””” cube a number… “””中。
調用doctest中的testmod的方法即可測試。
輸出如下:
Trying:
cube(2)
Expecting:
8
ok
cube(3)
27
cube(4)
64
1 itemshad no tests:
__main__
1 itemspassed all tests:
3 tests in __main__.cube
3 testsin 2 items.
3 passedand 0 failed.
Testpassed.
TestResults(failed=0, attempted=3)
(2)也可以把測試用例寫在記事本檔案中。建立記事本example.txt,寫入以下内容:
>>> from cubetest import cube
>>> cube(1)
1
>>> cube(2)
8
>>> cube(4)
64
然後寫測試代碼 test.py:
使用python test.py –v 執行測試代碼,可以得到以下結果
from cubetest import cube
Expectingnothing
cube(1)
1
1 items passedall tests:
4 tests in example.txt
4 tests in 1items.
4 passed and 0failed.
Test passed.
2.unittest的使用
(1)寫待測試的程式如下:
測試程式中的類eventest類繼承自TestCase,它包含setUp() ,test_1(),test_2()和tearDown()四個方法。在測試運作前,會自動運作setUp()方法,在測試完成之前,會自動調用tearDown()方法。test_1()和test_2()是自定義的測試方法。寫測試程式如下:
上面用到了self.AssertEqual(),類似的判斷方法還有:
assertNotEqual(a,b) a!=b
asserTrue(x) bool(x)為真
assertFalse(x) bool(x)為假
assertIs(a,b) a is b
assertIsNot(a,b) a is not b
assertIsNone(x) x is None
assertIsNotNone(x) x is not None
assertIn (a,b) a in b
assertNotIn(a,b) a not in b
assertIsInstance(a,b) isinstance(a,b)
assertNotIsInstance(a,b) not instance(a,b)
(2) 也可以使用TestSuite對測試用例進行封裝,下面的程式定義了類evensuite,它繼承自類TestSuite,方法addTest()用于添加測試方法。
測試程式如下:
運作程式 ,結果輸出:
_ _
ran 2 tests in 0.001s
OK