python unittest 單元測試框架

2022-07-24 06:39:11 字數 3624 閱讀 7427

unittest單元測試框架不僅可以適用於單元測試,還可以適用web自動化測試用例的開發與執行,該測試框架可組織執行測試用例,並且提供了豐富的斷言方法,判斷測試用例是否通過,最終生成測試結果。今天初步總結一下unittest的 用法。

測試一段程式是否有錯誤,我們既可以採用普通的測試方法,也可以採用unittest測試框架

class

count():

def__init__

(self,a,b):

self.a=a

self.b=b

defadd(self):

return self.a+self.b

if__name__=="

__main__":

c=count(2,3)

print(c.add())

首先用普通方法進行測試

from count import

count

class

testcount():

deftest_add(self):

try:

c = count(2, 3)

sum =c.add()

assert (sum == 6), '

the result is not correct

'except

assertionerror as e:

print(e) #

e 是乙個變數,記錄了異常的類,可以列印出錯誤資訊

else

:

print("

test pass")

if__name__=="

__main__":

a =testcount()

a.test_add()

採用python內建的斷言方法,然後與異常處理相結合

現在再使用unittest測試框架進行測試

import

unittest

from count import

count

class

testcount(unittest.testcase):

defsetup(self):

print("

test case starts")

defteardown(self):

print("

test case ends")

deftest_add(self):

c=count(2,4)

sum=c.add()

self.assertequal(sum,7)

deftest_add2(self):

c = count(2, 4)

sum=c.add()

self.assertequal(sum,6)

if__name__=="

__main__":

suite=unittest.testsuite()

suite.addtest(testcount(

"test_add

")) #

testcount 是測試類名

suite.addtest(testcount("

test_add2

")) #

test__add是測試類中測試用例名,有幾個測試用例就新增幾個

runner=unittest.texttestrunner()

runner.run(suite)

其中if __name__=="__main__":中的**可以用下面**代替

if

__name__=="

__main__":

unittest.main()

unittest自帶的main方法可以執行測試類中所有以test開頭的用例

unittest執行測試用例,總會自動執行setup和teardown方法,setup方法完成測試用例一些初始工作,如開啟瀏覽器,teardown方法完成用例執行完的收尾工作,如關閉瀏覽器

unittest測試類中用例名總是以test開頭

unittest自身帶有一系列的斷言方法:

assertequal(a,b,[msg='測試失敗時列印的資訊']) 斷言a,b是否相等

assertnotequal(a,b,[msg='測試失敗時列印的資訊']) 斷言a,b不等

asserttrue(x,[msg='測試失敗時列印的資訊']):斷言x是否true

assertfalse(x,[msg='測試失敗時列印的資訊']):斷言x是否false

assertin(a,b,[msg='測試失敗時列印的資訊']):斷言a是否在b中

assertnotin(a,b,[msg='測試失敗時列印的資訊']):斷言a是否在b中

如果有大量的測試用例,存在於不同的檔案中,如果要同時執行這些檔案,可以通過discover方法實現,這樣右分為兩種情況:1.檔案都在同級目錄下2.含有子級目錄

1.檔案都在同級目錄下

import

unittest

if__name__=="

__main__":

testdir = r""#

testdir是測試檔案根目錄

discover = unittest.defaulttestloader.discover(testdir, pattern="

test_un*.py

", top_level_dir=none)

runner=unittest.texttestrunner()

runner.run(discover)

2.含有子級目錄

**同上,只是在每個子級目錄中新建乙個__init__.py檔案

多個測試用例同時執行,unittest如何排序,確定先執行哪乙個

unittest 通過比較用例名的ascll碼,哪個用例名的ascll碼在前,先執行,否則後執行

import

unittest

from count import

count

class

testcount(unittest.testcase):

defsetup(self):

print("

test case starts")

defteardown(self):

print("

test case ends")

deftest_add(self):

print("

test_add")

c=count(2,4)

sum=c.add()

self.assertequal(sum,6)

deftest_bdd(self):

print("

test_bdd")

c = count(2, 4)

sum=c.add()

self.assertequal(sum,6)

if__name__=="

__main__":

unittest.main()

結果

python unittest基礎用法

unittest 執行例項 基礎用法 import unittest 匯入unittest模組 defcalc a,b 被測的方法 return a b class testcale unittest.testcase 必須要整合unittest的testcase方法 deftest1 self r...

Python unittest學習筆記

python標準庫中的模組unittest提供了 測試工具。單元測試用於核實函式的某個方面沒問題 測試用例是一組單元測試,這些單元測試一起核實函式在各種情形下的行為都符合要求。良好的測試用例考慮到了函式可能收到的各種輸入,包含針對所有這些情形的測試。全覆蓋式測試用例包含一整套單元測試,涵蓋了各種可能...

python unittest 之mock學習筆記

mock的詳細用法 英文介紹 本文先對函式的mock方法進行演示。假設有檔案fun1和fun2,fun2中的函式呼叫了fun1中的函式。利用mock方法生成fun1中函式的乙個fake返回值,在此基礎上,對fun2中的函式進行單元測試。如下 fun1檔案 usr bin env python cod...