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採用python內建的斷言方法,然後與異常處理相結合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()
現在再使用unittest測試框架進行測試
import其中if __name__=="__main__":中的**可以用下面**代替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)
ifunittest自帶的main方法可以執行測試類中所有以test開頭的用例__name__=="
__main__":
unittest.main()
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.檔案都在同級目錄下
import2.含有子級目錄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)
**同上,只是在每個子級目錄中新建乙個__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...