03-pytest框架結構及呼叫順序
阿新 • • 發佈:2021-06-27
pytest 框架結構
執行用例前後會執行setup, teardown 來完成用例的前置和後置條件。pytest框架中使用setup, teardown 更靈活,按照用例執行級別可以分為以下幾類:
- 模組級(setup_module/teardown_module)在模組始末呼叫
- 函式級(setup_function/teardown_function)在函式始末呼叫(在類外部)
- 類級(setup_class/teardown_class)在類始末呼叫(在類中)
- 方法級(setup_method/teardown_method)在方法始末呼叫(在類中)
- 方法級(setup/teardown)在方法始末呼叫(在類中,方法細化級別
呼叫順序
setup_module>setup_class>setup_method>setup>teardown>teardown_method>teardown_class>teardown_module
圖解:
驗證上面的執行順序,程式碼如下:
1 def setup_module(): 2 print('開始 module') 3 4 5 def teardown_module(): 6 print('結束 module') 7 8 9 def setup_function(): 10 print('開始 function') 11 12 13 def teardown_function(): 14 print('結束 function') 15 16 17 def test_one(): 18 print('這是one') 19 20 21 class TestDemo: 22 23 def setup_class(self): 24 print('開始 class') 25 26 def teardown_class(self): 27 print('結束 class') 28 29 def setup_method(self):30 print('開始 method') 31 32 def teardown_method(self): 33 print('結束 method') 34 35 def setup(self): 36 print('開始 setup') 37 38 def teardown(self): 39 print('結束 setup') 40 41 def test_two(self): 42 print('這是two') 43 assert 1 == 1 44 45 def test_three(self): 46 print('這是three') 47 assert 1 > 0
執行結果:
1 test_demo2.py 開始 module 2 開始 function 3 這是one 4 .結束 function 5 開始 class 6 開始 method 7 開始 setup 8 這是two 9 .結束 setup 10 結束 method 11 開始 method 12 開始 setup 13 這是three 14 .結束 setup 15 結束 method 16 結束 class 17 結束 module
setup_module和teardown_module在整個模組中只執行一次,setup_class和teardown_class在類裡面只執行一次,setup_method/teardown_method和setup/teardown 在每個方法前後都會被呼叫。一般用的最多的是方法級別和類級別。
寫在最後的話:小白同學願意和大家一起成長~