天天看點

python中的單元測試

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