1. 程式人生 > 實用技巧 >pytest入坑到放棄3--setup\teardown(前置\後置)

pytest入坑到放棄3--setup\teardown(前置\後置)

1、setup\teardown 執行級別

  • 模組級別(setup_module/teardown_module):開始於模組始末,全域性的
  • 函式級(setup_function/teardown_function):對函式用例生效(不在類中)
  • 類級(setup_class/teardown_class):只在類中前後執行一次(在類中)
  • 方法級(setup_method/teardown_method):開始於方法始末(在類中)
  • 類裡面的(setup/teardown):在呼叫方法的前後執行

2、模組級別(setup_module/teardown_module) 和 函式級(setup_function/teardown_function)

# File  : test_demo_2.py
# IDE   : PyCharm

import pytest

# 整個檔案只執行一次,在 selenium 中可以實現一個瀏覽器執行多個測試用例
def setup_module():
    print('*' * 10 +'用例開始,只執行一次!'+ '*' * 10)

def teardown_module():
    print('*' * 10 +'用例結束,只執行一次!' + '*' * 10)
# 每執行一個測試用例執行一次setup和teardown
def setup_function():
    print('*' * 10 +'
用例開始!'+ '*' * 10) def teardown_function(): print('*' * 10 +'用例結束!' + '*' * 10) def test_1(): print('*' * 5 + 'test_1' + '*' * 5) a = 'hello world!' assert 'hello' in a def test_2(): print('*' * 5 + 'test_2' + '*' * 5) x = 'hello world!' assert hasattr(x, 'helloWorld') @pytest.mark.smoke
def test_3(): print('*' * 5 + 'test_3' + '*' * 5) b = 3 assert b == 4

3、類級(setup_class/teardown_class):

  pytest 中的 setup() 和 teardown(),等價於unittest 框架中有 setUp() 和 tearDown()

  pytest 中的 setup_class() 和 teardown_class(),等價於 unittest 中的 setupClass() 和 teardownClass()

4、執行順序:

  setup_module > setup_class > setup_method > setup > teardown > teardown_method > teardown_class > teardown_module

def setup_module():
print('*' * 10 +'用例開始!'+ '*' * 10)

def teardown_module():
print('*' * 10 +'用例結束!' + '*' * 10)

def test_1():
print('*' * 5 + 'test_1' + '*' * 5)
a = 'hello world!'
assert 'hello' in a

def test_2():
print('*' * 5 + 'test_2' + '*' * 5)
x = 'hello world!'
assert hasattr(x, 'helloWorld')

@pytest.mark.smoke
def test_3():
print('*' * 5 + 'test_3' + '*' * 5)
b = 3
assert b == 4