1. 程式人生 > 其它 >03-pytest框架結構及呼叫順序

03-pytest框架結構及呼叫順序

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 在每個方法前後都會被呼叫。一般用的最多的是方法級別和類級別。

寫在最後的話:小白同學願意和大家一起成長~