當(dāng)今的現(xiàn)代企業(yè)需要更快的軟件功能發(fā)布,以生產(chǎn)高質(zhì)量的產(chǎn)品,并在不犧牲軟件質(zhì)量的情況下快速進(jìn)入市場(chǎng)。為了確保成功部署,加速發(fā)布新功能或修復(fù)現(xiàn)有功能中的錯(cuò)誤需要嚴(yán)格的端到端軟件測(cè)試。
雖然手動(dòng)測(cè)試可用于小型應(yīng)用程序或軟件,但大型和復(fù)雜的應(yīng)用程序需要專用的資源和技術(shù),如 python 測(cè)試框架、自動(dòng)化測(cè)試工具等,以確保在更短的時(shí)間內(nèi)實(shí)現(xiàn)最佳的測(cè)試覆蓋率和更快的質(zhì)量發(fā)布。
PyTest 是一個(gè)測(cè)試框架,允許個(gè)人使用 Python 編寫測(cè)試代碼,使您能夠?yàn)閿?shù)據(jù)庫、API 和用戶界面創(chuàng)建簡(jiǎn)單且可擴(kuò)展的測(cè)試用例。PyTest 主要用于編寫 API 測(cè)試。它有助于開發(fā)從簡(jiǎn)單的單元測(cè)試到復(fù)雜的功能測(cè)試的測(cè)試。根據(jù)Future Market Insights集團(tuán)發(fā)布的一份報(bào)告,到14年底,全球自動(dòng)化測(cè)試市場(chǎng)預(yù)計(jì)將以3.93%的復(fù)合年增長(zhǎng)率增長(zhǎng),市場(chǎng)價(jià)值將達(dá)到6億美元。
為什么選擇 Pytest?
選擇正確的測(cè)試框架可能很困難,并且依賴于可行性、復(fù)雜性、可伸縮性和框架提供的功能等參數(shù)。PyTest 是測(cè)試自動(dòng)化工程師的首選測(cè)試框架,對(duì) Python 基礎(chǔ)知識(shí)有很好的了解。使用 PyTest 框架,您可以創(chuàng)建高覆蓋率單元測(cè)試、復(fù)雜功能測(cè)試和驗(yàn)收測(cè)試。除了是一個(gè)極其通用的測(cè)試自動(dòng)化框架之外,PyTest 還具有大量的測(cè)試執(zhí)行功能,例如參數(shù)化、標(biāo)記、標(biāo)記、并行執(zhí)行和依賴項(xiàng)。
使用 Pytest 作為測(cè)試框架時(shí)沒有樣板
Pytest 可以運(yùn)行用 unittest、doctest 和 nose 編寫的測(cè)試
Pytest 支持用于行為驅(qū)動(dòng)測(cè)試的插件
有 150 多個(gè)插件可用于支持不同類型的測(cè)試自動(dòng)化
下圖顯示了 Pytest 框架的典型結(jié)構(gòu)。
(Pytest 根框架)
如上面的結(jié)構(gòu)所示,框架核心組件的業(yè)務(wù)邏輯完全獨(dú)立于 Pytest 組件。Pytest 使用核心框架就像在測(cè)試腳本中實(shí)例化對(duì)象并調(diào)用其函數(shù)一樣。測(cè)試腳本文件名應(yīng)以“test_”開頭或以“_test”結(jié)尾。測(cè)試函數(shù)名稱也應(yīng)采用相同的格式。Pytest 中的報(bào)告可以通過 Pytest-html 報(bào)告來處理。
重要的 Pytest 特性
1. pytest 夾具
Pytest最突出的功能是Fixtures。顧名思義,夾具是 Pytest 中用于生成特定條件的裝飾器函數(shù),需要安排該條件才能成功運(yùn)行測(cè)試。
條件可以是任何前提條件,例如創(chuàng)建所需類的對(duì)象,將應(yīng)用程序帶到特定狀態(tài),在單元測(cè)試的情況下啟動(dòng)模擬程序,初始化依賴項(xiàng)等。夾具還負(fù)責(zé)拆除或還原測(cè)試執(zhí)行完成后生成的條件。通常,夾具負(fù)責(zé)測(cè)試的設(shè)置和拆卸條件。
夾具范圍
設(shè)置和拆卸不必僅用于測(cè)試功能。設(shè)置的范圍可能因測(cè)試功能而異,可能與整個(gè)測(cè)試會(huì)話一樣大。這意味著每個(gè)定義的范圍僅執(zhí)行一次設(shè)置-拆卸。為了實(shí)現(xiàn)相同的目的,我們可以定義范圍以及夾具裝飾器,即會(huì)話、模塊、類、函數(shù)。
夾具使用
Pytest 提供了隱式使用燈具或使用 autouse 參數(shù)顯式調(diào)用燈具的靈活性。要默認(rèn)調(diào)用夾具函數(shù),需要將 autouse 參數(shù)值設(shè)置為 True,否則設(shè)置為 False。
2. Conftest.py
測(cè)試框架中使用的所有夾具通常都以 conftest.py 定義。它是任何 Pytest 執(zhí)行的入口點(diǎn)。夾具不必是自動(dòng)使用的=True。所有定義的夾具都可以由所有測(cè)試文件訪問。conftest.py 需要放在 Pytest 框架的根目錄中。
3. Pytest 鉤子
Pytest 提供了許多鉤子,這些鉤子將被調(diào)用以執(zhí)行特定的設(shè)置。鉤子是剛好產(chǎn)生一次的生成器函數(shù)。用戶還可以為 Pytest 鉤子編寫包裝器。
4. 標(biāo)記
Pytest 提供了標(biāo)記,用于根據(jù)功能、范圍、測(cè)試類別等對(duì)一組測(cè)試進(jìn)行分組。可以根據(jù)標(biāo)記自動(dòng)篩選測(cè)試執(zhí)行。即接受、回歸套裝、登錄測(cè)試等。
標(biāo)記還充當(dāng)參數(shù)化測(cè)試的推動(dòng)因素。將對(duì)作為參數(shù)傳遞的所有參數(shù)執(zhí)行測(cè)試。請(qǐng)注意,Pytest 將一個(gè)參數(shù)的測(cè)試視為完全獨(dú)立的測(cè)試。許多事情都可以通過標(biāo)記來實(shí)現(xiàn),例如將測(cè)試標(biāo)記為跳過,在某些條件下跳過,具體取決于特定測(cè)試等。
5. 斷言
Pytest 不要求測(cè)試腳本具有其斷言。它可以完美地與Python內(nèi)置斷言一起工作。
6.皮特測(cè)試.ini
所有默認(rèn)配置數(shù)據(jù)都可以放在pytest中.ini并且conftest可以讀取相同的數(shù)據(jù),而無需任何特定的實(shí)現(xiàn)。
PyTest 支持大量插件,通過這些插件,幾乎任何級(jí)別的復(fù)雜系統(tǒng)都可以實(shí)現(xiàn)自動(dòng)化。Pytest 的一個(gè)主要好處是,任何類型的結(jié)構(gòu)實(shí)現(xiàn)都是使用原始 Python 代碼完成的,沒有任何樣板代碼。這意味著在 Pytest 中實(shí)現(xiàn)任何東西就像在 Python 中實(shí)現(xiàn)任何東西一樣靈活和干凈。
在更短的開發(fā)周期中,測(cè)試自動(dòng)化提供了幾個(gè)對(duì)生成高質(zhì)量應(yīng)用程序至關(guān)重要的好處。它減少了在手動(dòng)測(cè)試方法中發(fā)生不可避免的人為錯(cuò)誤的可能性。自動(dòng)化測(cè)試可提高軟件質(zhì)量,并降低缺陷危及交付時(shí)間的可能性。
審核編輯:郭婷
-
API
+關(guān)注
關(guān)注
2文章
1510瀏覽量
62394 -
代碼
+關(guān)注
關(guān)注
30文章
4825瀏覽量
69043 -
python
+關(guān)注
關(guān)注
56文章
4807瀏覽量
85037
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論