Pytest - setup 和 teardown
-
Executing use cases must require some preconditions or post operations, such as pre-user login, post-clearing data and other operations;
-
unittest provides two pre-positions (setup, setupClass) and two post-positions (teardown, teardownClass);
-
In contrast, pytest provides ten
setup
sumteardown
methods:-
Module level: setup_module, teardown_module
-
Function level: setup_function, teardown_function, methods not in the class
-
Class level: setup_class, teardown_class
-
Method level: setup_method, teardown_method
-
Use case level: setup, teardown
-
test_py.py
import pytest |
|
def setup_module(): |
|
print("\n!!!! setup_module > 整个.py模块开始前只执行一次:打开浏览器/获取cookie !!!!") |
|
def teardown_module(): |
|
print("!!!! teardown_module > 整个.py模块结束后只执行一次:关闭浏览器 !!!!") |
|
def setup_function(): |
|
print("\n### setup_function > 每个函数级别用例开始前都执行 ###") |
|
def teardown_function(): |
|
print("### teardown_function > 每个函数级别用例结束后都执行 ###") |
|
def test_one(): |
|
print("test case 1") |
|
def test_two(): |
|
print("test case 2") |
|
class TestCase(): |
|
def setup_class(self): |
|
print("\n^^^ setup_class > 整个测试类开始前只执行一次 ^^^") |
|
def teardown_class(self): |
|
print("^^^ teardown_class > 整个测试类结束后只执行一次 ^^^") |
|
def setup_method(self): |
|
print("\n=== setup_method > 类里面每个用例执行前都会执行 ===") |
|
def teardown_method(self): |
|
print("=== teardown_method > 类里面每个用例结束后都会执行 ===") |
|
def setup(self): |
|
print("--- setup > 类里面每个用例执行前都会执行 ---") |
|
def teardown(self): |
|
print("--- teardown > 类里面每个用例结束后都会执行 ---") |
|
def test_three(self): |
|
print("test case 3") |
|
def test_four(self): |
|
print("test case 4") |
|
if __name__ == '__main__': |
|
pytest.main(["-q", "-s", "-ra", "test_py.py"]) |
|
-
The execution results are as shown in the figure for each level (the order of explanation is from top to bottom, and the level is from low to high):
-
Yellow box: use case level [setup, teardown]
-
Orange box: method level [setup_method, teardown_method]
-
Blue box: class level [setup_class, teardown_class]
-
Green box: function level [setup_function, teardown_function]
-
Red box: module level [setup_module, teardown_module]
-