單元測試測試之unittest

2021-09-13 11:49:23 字數 3684 閱讀 7791

首先我們先理解單元測試是誰做的 —>開發

然後我們測試會寫**之後,我們也可以自己做單元測試

那麼單元測試是做什麼? --> 對某個功能去測試

單元測試測試什麼? -->類裡面的方法

單元測試怎麼測? -->建立物件 — 呼叫方法 —傳參 -->通過傳遞多組資料來測試不同的情況

單元測試的框架有 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 單...