介面測試 unittest

2021-10-10 07:29:25 字數 2952 閱讀 8557

測試用例 - test case:乙個完整的測試過程,特點的輸入得到特定的輸出,並對輸出進行校驗

測試裝置 - test fixture:測試部件,測試執行前的環境準備部件,測試執行部件,測試完成後的環境清理部件

測試套件 - test suite:測試用例集

測試執行 - test runner : 測試執行,並生成各種格式的報告

1)testcase類:所有的測試類都必要要繼承testcase類,然後才具備執行能力

2)testloader類:

3)testsuite類

4)main()方法:用來執行所有的以test開頭的測試用例,例如:test01、test_div01

5)run()方法:用來執行測試用例

1) unittest 執行方式------沒有報告

2) 普通執行方式------有測試報告

測試執行前的環境準備部件—setup

測試執行後的環境清理部件—teardown

每條測試用例執行前都會執行setup,每條測試用例執行後都會執行teardown(針對測試類裡的每條測試用例)

測試執行前的環境準備部件—setupclass

測試執行後的環境清理部件—teardownclass

所有測試用例執行前去執行setupclass,所有測試用例執行後都會執行teardownclass(針對測試類)

注意:他是類方法,必須要用裝飾器 @classmethod 去修飾

unittest裝飾器和斷言

1)相等斷言

引數1 == 引數2,否則丟擲引數3:msg

self.assertequal(ex,actual,"斷言失敗")
2)真假斷言(布林斷言)

真假斷言,引數1:表示式 結果為true/false 引數2:msg

self.asserttrue(actual == ex,"actual != ex")
3)包含斷言

包含斷言,引數1是否在引數2裡(引數2包含引數1)

self.assertin("a","ab","a在ab中")
4)位址斷言

a = 2

b = 2

self.assertis(a,b,"msg")

5)例項斷言

判斷cal是否是caculator的物件

self.assertisinstance(cal,caculator,"msg")
6)異常捕獲

with self.assertraises(zerodivisionerror):

actual = cal.div(10,0)

裝飾器:不改變源**(函式本身),卻能新增一種新的功能

用 @ 修飾

skip — 跳過

跳過, 引數:跳過的原因

@unittest.skip("強制跳過")
滿足條件跳過,不滿足則不跳過, 引數1:條件 引數2:原因

@unittest.skipif(1<2,"滿足條件跳過")
不滿足條件,則跳過, 引數1:條件 引數2:原因

@unittest.skipunless(3<2,"不滿足跳過")
expectfailure — 期待失敗

@unittest.expectedfailure
testloader(測試載入器)/testsuite(測試套件)

loader = unittest.testloader()
testloader 4種方法:

根據類名載入測試用例,返回乙個測試用例集

suite = loader.loadtestsfromtestcase(teststudent)
根據模組名稱載入測試用例

suite01 = loader.loadtestsfrommodule(test02)
根據路徑名稱來載入測試用例,引數是string,路徑名稱=包名.模組名.類名.方法

suite02 = loader.loadtestsfromname("day01.test02.testcaculator.test_div02")
多個路徑

suite03 = loader.loadtestsfromnames(["day01.test02.testcaculator.test_div02","day01.test02.testcaculator.test_div03"])
testsuite 2種方法:addtest / addtests

suite = unittest.testsuite()

suite.addtests([suite01,suite03])

runner.run(suite)

html報告

with open("report.html","w",encoding="utf8") as f:

runner = htmltestrunner(f,verbosity=1,title="測試報告",description="關於此次報告的描述")

runner.run(suite)

指令碼的執行方式:

unittest.main()	執行全部

texttestrunner().run() 需要用測試套件來組織測試用例並執行,文字報告

htmltestrunner().run() 需要用測試套件來組織測試用例並執行,h5報告

python -m unittest 指令碼.py 命令列執行

UnitTest測試框架

unittest是目前應用都相對較高的測試框架之一,主要用於管理測試用例,最初是應用於單元測試,現在可以進行ui 介面自動化測試。它是python內建的乙個測試框架。unittest包含四大元件 1.匯入環境 import unittest2.unittest有基本語法規則 a.繼承自unittes...

單元測試 unittest

單元測試框架 unittest pytest uniittest unittest是python內建的單元測試框架,具有編寫用例,組織用例,執行用例,輸出測試報告等自動化框架的條件。unittest中的5個重要概念 test fixture,testcase,testsuite,testloder,...

單元測試測試之unittest

首先我們先理解單元測試是誰做的 開發 然後我們測試會寫 之後,我們也可以自己做單元測試 那麼單元測試是做什麼?對某個功能去測試 單元測試測試什麼?類裡面的方法 單元測試怎麼測?建立物件 呼叫方法 傳參 通過傳遞多組資料來測試不同的情況 單元測試的框架有 unittest 和 pytest 學會了un...