pytest之用例設計原則及執行順序


前言:

和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框架運行整個項目呢?

 

 可參考小菠蘿的測試筆記:https://www.cnblogs.com/poloyy/p/12641505.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM