前言:
和unittest一樣,pytest也有一套用例設計的規則和執行順序。
一、用例設計原則:
1、檔案必須以 test_*開頭 或 *_test結尾。
2、測試用例類必須以 test開頭。
3、測試用例必須以 test 開頭。
二、驗證用例收集規則:
有這樣乙個目錄結果:有2個package(模組包,有__init__.py檔案),乙個directory(資料夾,無__init__.py檔案)。
其中,package和directory中都有2個.py檔案,乙個以test開頭,乙個非test開頭。
每個.py檔案中有要給test類和非test類,而test類中有乙個test開頭的方法和非test開頭的方法。
執行結果如下:
我們可以看到:
1、無論是package還是directory,都是pytest的收集物件。
2、非test*_開頭或*_test結尾的.py檔案不會被收集。
3、非test開頭的類不會被收集。
4、非test開頭的方法不會被收集。
這樣我們就得出並驗證了規則:
1、test_* 開頭 或 *_test結尾的.py檔案。
2、test開頭的類。
3、test開頭的方法或函式。
二、執行順序:
和unittest一樣,遵循ascii碼的順序:0~9,a~z, a-z
重點:
pytest會收集當前目錄及其子目錄下的符合用例設計規則的用例:
runner.py有pytest執行入口:pytest.main(["-s"]),我們看執行時收集的用例從**來:
我們可以看到,runner.py收集了和他同一目錄中的package或directory(如果有子目錄,也會收集)
我們在看下面的示例:
該例項時在testcase1資料夾中加了乙個runner1.py(和runner.py**一樣,有pytest執行入口)
收集的用例如下:
我們可以看到,runner1只收集了他所在目錄(當前目錄)下的test_1.py檔案。
所以,我們的出來乙個結論:pytest會收集當前目錄或子目錄中的測試用例。
思考:那我們如果從右上角並用pytest框架執行整個專案呢?
可參考小菠蘿的測試筆記:
PyTest之用例超時強制退出
由於某些測試用例步驟長,執行時間比較久,為了防止程式長時間處於等待狀態,浪費寶貴時間。為此,我們可以設定乙個超時時間,當測試在指定的時間長度內沒有完成 即使程式並沒有 僵死 只是處理得比較慢 測試會被強行終止。再此,需要安裝乙個外掛程式pytest timeout。如下 pip install py...
軟體測試核心之用例設計
測試設計 將概括的測試目標轉化為具體的測試條件和測試用例的一系列活動 測試分析和設計的主要任務 確定測試條件 測試用例 通過使用在測試計畫中確定的測試技術與測試方法,對於已確定的測試條件進行逐步推敲,精煉而設計出來的,重點說明如何具體操作,產生何種結果的文件 設計方法 定義 把程式的輸入域劃分成若干...
不得不說之用例設計
自動化測試用例如何設計,對於新手來說也是比較難理解的問題。不少新手剛剛掌握了寫指令碼的能力,一上來就拿著功能測試用例一條一條的轉化成自動化用例。在寫的過程中,會發現諸多問題,例如,指令碼中重複 很多,乙個指令碼的執行結果影響到另乙個指令碼的執行,有些功能用例很難轉化成自動化用例等。站在使用者角度設計...