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