目錄
- 1、前言
- 2、各級別詳解
- 3、總結
1、前言
在自動化測驗程序中經常需要進行初始化和后期處理等作業,如電商加購物車測驗需要先登錄,測驗完畢需要關閉瀏覽器等,Pytest提供了5種型別的setup和teardown的方法,具體如下:
- 模塊級別:
setup_module,teardown_module - 函式級別:
setup_function,teardown_function - 類級別:
setup_class,teardown_class - 類方法級別:
setup_method,teardown_method - 函式或類方法級別(兼容unittest):
setup,teardown
2、各級別詳解
- 模塊級別:是全域的,在模塊運行前執行一次
setup_module()方法,在模塊運行后執行一次teardown_module()方法
def setup_module():
print("【初始化...】")
def teardown_module():
print("【后期處理】")
class Test_1:
def test_1_a(self):
print("這是類方法test_1_a")
def test_1_b(self):
print("這是類方法test_1_b")
class Test_2:
def test_2_a(self):
print("這是類方法test_2_a")
def test_2_b(self):
print("這是類方法test_2_b")
def test_3():
print("這是函式test_3")
"""
執行結果
setupAndteardown/test_module.py::Test_1::test_1_a 【初始化...】
這是類方法test_1_a
PASSED
setupAndteardown/test_module.py::Test_1::test_1_b 這是類方法test_1_b
PASSED
setupAndteardown/test_module.py::Test_2::test_2_a 這是類方法test_2_a
PASSED
setupAndteardown/test_module.py::Test_2::test_2_b 這是類方法test_2_b
PASSED
setupAndteardown/test_module.py::test_3 這是函式test_3
PASSED【后期處理】
"""
- 函式級別:只對函式用例生效,在每個函式用例前后執行,不包括類中方法
def setup_function():
print("【初始化...】")
def teardown_function():
print("【后續處理】")
class Test_1:
def test_1_a(self):
print("這是類方法test_1_a")
def test_1_b(self):
print("這是類方法test_1_b")
def test_2():
print("這是函式test_2")
def test_3():
print("這是函式test_3")
"""
執行結果
setupAndteardown/test_function.py::Test_1::test_1_a 這是類方法test_1_a
PASSED
setupAndteardown/test_function.py::Test_1::test_1_b 這是類方法test_1_b
PASSED
setupAndteardown/test_function.py::test_2 【初始化...】
這是函式test_2
PASSED【后續處理】
setupAndteardown/test_function.py::test_3 【初始化...】
這是函式test_3
PASSED【后續處理】
"""
- 類級別:只在類中運行,在類的全部方法前執行一次
setup_class(),全部方法后執行一次teardown_class()
class Test_1:
def setup_class(self):
print("【初始化...】")
def teardown_class(self):
print("【后續處理】")
def test_1_a(self):
print("這是類中方法test_1_a")
def test_1_b(self):
print("這是類中方法test_1_b")
class Test_2:
def test_2_a(self):
print("這是類中方法test_2_a")
def test_2_b(self):
print("這是類中方法test_2_b")
def test_3():
print("這是函式test_3")
"""
執行結果
setupAndteardown/test_class.py::Test_1::test_1_a 【初始化...】
這是類中方法test_1_a
PASSED
setupAndteardown/test_class.py::Test_1::test_1_b 這是類中方法test_1_b
PASSED【后續處理】
setupAndteardown/test_class.py::Test_2::test_2_a 這是類中方法test_2_a
PASSED
setupAndteardown/test_class.py::Test_2::test_2_b 這是類中方法test_2_b
PASSED
setupAndteardown/test_class.py::test_3 這是函式test_3
PASSED
"""
- 類方法級別:只在類中運行,類中每個方法級別的測驗用例之前先執行一次
setup_method(),執行后再執行一次teardown_method ()
class Test_1:
def setup_method(self):
print("【初始化...】")
def teardown_method(self):
print("【后續處理】")
def test_1_a(self):
print("這是類方法test_1_a")
def test_1_b(self):
print("這是類方法test_1_b")
def test_1_c(self):
print("這是類方法test_1_c")
def test_1_d(self):
print("這是類方法test_1_d")
"""
執行結果
setupAndteardown/test_method.py::Test_1::test_1_a 【初始化...】
這是類方法test_1_a
PASSED【后續處理】
setupAndteardown/test_method.py::Test_1::test_1_b 【初始化...】
這是類方法test_1_b
PASSED【后續處理】
setupAndteardown/test_method.py::Test_1::test_1_c 【初始化...】
這是類方法test_1_c
PASSED【后續處理】
setupAndteardown/test_method.py::Test_1::test_1_d 【初始化...】
這是類方法test_1_d
PASSED【后續處理】
"""
- 函式或類方法級別:
setup()和teardown()放類里面就會對類方法前后置,放在類外面就會對函式前后置,同unittest中效果,
# 類外前后置
def setup():
print("【函式初始化...】")
def teardown():
print("【函式后期處理】")
class Test_1:
# 類中前后置
def setup(self):
print("【類方法初始化...】")
def teardown(self):
print("【類方法后期處理】")
def test_1_a(self):
print("這是類方法test_1_a")
def test_1_b(self):
print("這是類方法test_1_b")
def test_2():
print("這是函式test_2")
def test_3():
print("這是函式test_3")
"""
執行結果
setupAndteardown/test_setup.py::Test_1::test_1_a 【類方法初始化...】
這是類方法test_1_a
PASSED【類方法后期處理】
setupAndteardown/test_setup.py::Test_1::test_1_b 【類方法初始化...】
這是類方法test_1_b
PASSED【類方法后期處理】
setupAndteardown/test_setup.py::test_2 【函式初始化...】
這是函式test_2
PASSED【函式后期處理】
setupAndteardown/test_setup.py::test_3 【函式初始化...】
這是函式test_3
PASSED【函式后期處理】
"""
3、總結
從各級別詳解中的模塊級別例子中可以看到,優先級最高的是模塊級別,從其他例子中可以看到類級別,類方法級別和函式級別互不影響,類級別是在類中所有方法前后置,類方法級別是類中所有測試方法前后置,函式級別是所有測驗函式前后置,setup和teardown在類中等同于setup_method和teardown_method,在類外等同于setup_function和teardown_function,與unittest中的setup和teardown作用及用法均相同
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/501693.html
標籤:其他
上一篇:Mybatis完整版詳解
