首先我們先理解單元測試是誰做的 —>開發
然後我們測試會寫**之後,我們也可以自己做單元測試
那麼單元測試是做什麼? --> 對某個功能去測試
單元測試測試什麼? -->類裡面的方法
單元測試怎麼測? -->建立物件 — 呼叫方法 —傳參 -->通過傳遞多組資料來測試不同的情況
單元測試的框架有 unittest 和 pytest
學會了unittest才好學pytest,跳過了unittest去學pytest的話有點難學
我們先了解下unittest:
unittest最核心的四個概念test case,test suite,test runner,test fixture,看圖
testcase -->這個模組是用來編寫測試用例
testsuite -->這個模組是測試用例收集器,是用來收集testcase裡的測試用例
testloader -->載入用例,可以從testcase載入用例,也可以從testsuite載入用例
runner裡的texttestresult和texttestrunner是用來執行測試用例
result裡的testresult是用來出測試報告
所以我們的單元測試是先編寫用例(case)–>收集用例(suite)–>載入用例(loader)–>執行用例(runner)–>出測試報告(result)
我們先建立乙個被測試的模組名為bei_uinttest,其次建立類和方法
#先建立要單元測試的類和被測試的方法
class my_unttis:
def add_jiafa(self,a,b):
return a+b
def add_jianfa(self,a,b):
return a-b
2.我們建立乙個danyuan_unittest模組名來編寫用例
2.1匯入 unittest模組 和 要編寫的用例,然後使用斷言來檢視
斷言圖:一般用assertequal()和assertisnone()用的比較多
#先導入內建類,再匯入被測試的類,這裡是編寫用例
import unittest
from python.bei_unittest import my_unttis
class testadd(unittest.testcase): #繼承unittest模組裡的testcase類
#所有的測試用例都要以test開頭,否則執行不了
def test_add_jiafa(self):
print('test_add_jiafa')
exp = 5 #設定我們的期望值
res=my_unttis().add_jiafa(2,3) #實際值
self.assertequal(exp,res) #使用斷言
def test_add_jianfa(self):
print('test_add_jianfa')
exp = 5
res = my_unttis().add_jianfa(10,5)
self.assertequal(exp,res)
輸出:
2.2 注:滑鼠右鍵在類名或 空白格 就執行全部用例,在方法名右鍵執行只會執行右鍵執行的一條
用例的執行順序是根據ascll 編碼來執行
3.我們建立乙個用例執行器來執行測試用例
建立乙個test_yongli模組,匯入測試用例
import unittest
from python.danyuan_unittest import testadd
from python import danyuan_unittest
import htmltestrunnercn #網頁生成報告
#儲存用例的容器suite 套件
'''這裡是執行用例,執行用例有三種方法'''
suite=unittest.testsuite() #建立乙個物件
#第一種方法,乙個個的去新增
# suite.addtest(testadd('test_add_jiafa'))
# suite.addtest(testadd('test_add_jianfa'))
#第二種方法 通過loader來載入用例 通過模組來載入用例,這裡是全部執行
#一般用這種方法比較多
# loader=unittest.testloader() #用例載入器
# suite.addtest(loader.loadtestsfrommodule(danyuan_unittest)) #這裡的括號是模組名,不是類名
#第三種 通過loader來載入用例 通過測試類名來載入用例
loader=unittest.testloader() #用例載入器
suite.addtest(loader.loadtestsfromtestcase(testadd))
#執行用例生成text報告
#執行用例,生成報告,python最原始報告
# with open('test.txt','w') as file:
# runner=unittest.texttestrunner(stream=file,verbosity=2)#建立乙個物件來執行用例
# runner.run(suite)
#生成httml報告,htmltestrunner檔案網上找哈
with open('test.html','wb') as file:
runner=htmltestrunnercn.htmltestreportcn(
stream=file,
verbosity=2, #生成的精確度
title='測試報告', #標題
description='用例', #描述
tester='王小賤' #測試人員名字
)#建立乙個物件來執行用例
runner.run(suite)
注:verbosity 有3個等級,0是最低,1是仔細,2是最準確
輸出:
python 原始.txt測試報告:
網頁生成的報告:
3.1注:我們看到執行結果有…,這兩個.是什麼意思呢?
. 是通過一條用例,假如有100條測試用例,那麼就有100個.
e **出錯
f 用例執行失敗
單元測試 unittest
單元測試框架 unittest pytest uniittest unittest是python內建的單元測試框架,具有編寫用例,組織用例,執行用例,輸出測試報告等自動化框架的條件。unittest中的5個重要概念 test fixture,testcase,testsuite,testloder,...
python單元測試之unittest
現在單元測試也要慢慢作正規了。我有幾張阿里雲幸運券分享給你,用券購買或者公升級阿里雲相應產品會有特惠驚喜哦!把想要買的產品的幸運券都領走吧!快下手,馬上就要搶光了。參考以下貼子作了一次python,最終我可是要用django和mock的喲。note1 什麼是測試用例?答 測試用例是乙個完整的測試流程...
Python之單元測試unittest
unittest中最核心的四部分是 testcase,testsuite,testrunner,testfixture 1 乙個testcase的例項就是乙個測試用例。測試用例就是指乙個完整的測試流程,包括測試前準備環境的搭建 setup 執行測試 run 以及測試後環境的還原 teardown 單...