python中的單元測試模組unittest

2021-09-10 01:45:05 字數 3114 閱讀 3543

一、概述:

由於最近在做自動化測試,所以對unittest進行了學習。unittest模組有自己的斷言,執行用例,組織用例等的屬性,所以,掌握了unittest,自動化也就不會太難了。

二、unittest的屬性:

該文以思維導圖的形式描述unittest的重要屬性。

其中前四個是unittest最核心的三個屬性。

testcase:測試用例;

testsuite:測試套件,多個測試用例組成乙個測試套件;

test runner:執行測試用例,該類中的run()方法會執行testsuite/testcase中的run()方法。測試的結果會儲存在testresult中。

還有乙個很重要的就是fixture,看著是挺陌生的,其實就是乙個測試用例執行之前環境的準備和執行之後環境的銷毀。

三、例項:

首先準備一些待測方法,functions.py:

def fun_div(x):

return x/2

def fun_add(x):

return x+2

def fun_minus(x):

return x-2

def fun_multi(x):

return x*2

接下來寫一些測試用例來測這些方法,test.py

import unittest

from functions import fun_add,fun_minus,fun_multi,fun_div  

class testfun(unittest.testcase):

times = 0

@classmethod

def setupclass(cls):

print('setupclass')

def setup(self):

# 每個測試用例執行之前都會執行該方法

testfun.times += 1

print('setup', testfun.times)

def teardown(self):

# 每個測試用例執行之後都會執行該方法

testfun.times += 1

print('teardown', testfun.times)

def test1(self):

# 測試用例1:fun_div

# 使用unittest提供的斷言驗證functions中的函式的正誤

# 如果不相等就會失敗

self.assertequal(2, fun_div(4))

self.failunlessequal(2, 2)

# 如果表示式為false,測試失敗

self.asserttrue(1 < 2)

self.failunless(2 == 2)

# 如果兩個值相等,就會測試失敗

self.assertnotequal(2, 1)

def test2(self):

# 測試用例2:fun_add

self.assertnotequal(2, 1)

def test2(self):

# 測試用例2:fun_add

self.asserttrue(fun_add(6) == 8)

def test3(self):

# 測試用例3:fun_minus

self.assertnotequal(6, fun_minus(6))

self.assertequal(4, fun_minus(6))

def test4(self):

# 測試用例4:fun_multi

self.assertisinstance(4, int)

self.assertequal(8, fun_multi(4))

@unittest.skipif(true, 'no')

def test5(self):

print('跳過!')

@classmethod

def teardownclass(cls):

print('teardownclass')

if __name__ == '__main__':

# unittest.main()

suit = unittest.testsuite()

suit.addtest(testfun('test1'))

suit.addtest(testfun('test2'))

suit.addtest(testfun('test3'))

suit.addtest(testfun('test4'))

runner = unittest.texttestrunner()

runner.run(suit)

執行結果:

解釋:1、setup和teardown是每個用例的環境準備和環境銷毀函式,也就是在每個用例執行之前要執行一次setup函式,每個用例執行之後會執行一次teardown函式;

2、setupclass和teardownclass是所有用例的環境準備和環境銷毀函式,也就是說,在這麼多用例執行之前只會執行一次setupclass函式,執行之後會執行一次teardownclass函式,舉例來說,比如此次測試用例需要使用資料庫,那麼在setupclass函式中就會進行資料庫連線,在teardownclass函式中進行資料庫斷開;

3、一般執行測試用例,都會使用testsuit的addtest()方法將要執行的用例放在乙個測試套件中,建立乙個testrunner物件,然後呼叫該物件的run()方法;

4、skip是乙個裝飾器,可以遮蔽一些測試用例,此功能可以用於除錯測試用例。(大型專案中,執行所有的用例需要用很久的時間,但是我們剛好需要除錯某個用例,就可以把其他的用例遮蔽掉);

5、乙個測試用例類都會繼承於testcase類;

6、測試用例報告可以使用texttestrunner輸出(txt報告),也可以用htmltestrunner輸出(html報告)。

python單元測試模組

web 程式開發過程一般包括以下幾個階段 需求分析,設計階段,實現階段,測試階段 其中測試階段通過人工或自動來執行測試某個系統的功能。目的是檢驗其是否滿足需求,並得出特定的結果,以達到弄清楚預期結果和實際結果之間的差別的最終目的。測試從軟體開發過程可以分為 整合測試 系統測試 在眾多的測試中,與程式...

Python中的單元測試

今晚試了一下python自帶的單元測試,主要是參考了python單元測試框架 的有關資料,折騰了乙個小時左右,總算在eric 4通過的幾個簡單的單元測試。在這裡將所得的相關知識記錄下來,方便將來查詢。python自帶的單元測試模組是unittest,從2.1以後為標準庫的一部分 1 測試模組impo...

關於Python單元測試模組Unitest

單元測試 白盒測試和黑盒測試 測試用例 測試執行後的輸出 使用test suite if name main suite unittest.testsuite 定義測試的內容列表 tests testmathfunc test add testmathfunc test minus 新增到測試中,a...