Pytest也提供了类似Unittest setup、teardown的方法, 有十种:
- **模块级别:**setup_module、teardown_module
- **函数级别:**setup_function、teardown_function,不在类中的方法
- **类级别:**setup_class、teardown_class
- **方法级别:**setup_method、teardown_method
- **方法细化级别:**setup、teardown
例子 10-1
代码:
# -*- coding:utf-8 -*-
# Author:tang_ren_li
# 2021-1-27 22:45
import pytest
def setup_module():
print("=====整个.py模块开始前只执行一次=====")
def teardown_module():
print("=====整个.py模块结束后只执行一次=====")
def setup_function():
print("===每个函数级别用例开始前都执行setup_function===")#非类的方法
def teardown_function():
print("===每个函数级别用例结束后都执行teardown_function====")#非类的方法
def test_case_a():
print("test case a run")
assert 1
def test_case_b():
print("test case b run")
assert 1
class Test_D():
def setup_class(self):
print("====整个测试类开始前只执行一次setup_class====")
def teardown_class(self):
print("====整个测试类结束后只执行一次teardown_class====")
def setup_method(self):
print("==类里面每个用例执行前都会执行setup_method==")
def teardown_method(self):
print("==类里面每个用例结束后都会执行teardown_method==")
def setup(self):
print("=类里面每个用例执行前都会执行setup=")
def teardown(self):
print("=类里面每个用例结束后都会执行teardown=")
def test_case_1(self):
print("test case 1 run ")
assert 1
def test_case_2(self):
print("test case 2 run ")
assert 1
运行结果:
============================= test session starts =============================
collecting … collected 4 items
Setup_TearDown.py::test_case_a
=====整个.py模块开始前只执行一次=====
===每个函数级别用例开始前都执行setup_function===
PASSED [ 25%]test case a run
===每个函数级别用例结束后都执行teardown_function====
Setup_TearDown.py::test_case_b
===每个函数级别用例开始前都执行setup_function===
PASSED [ 50%]test case b run
===每个函数级别用例结束后都执行teardown_function====
Setup_TearDown.py::Test_D::test_case_1
====整个测试类开始前只执行一次setup_class====
==类里面每个用例执行前都会执行setup_method==
=类里面每个用例执行前都会执行setup=
PASSED [ 75%]test case 1 run
=类里面每个用例结束后都会执行teardown=
==类里面每个用例结束后都会执行teardown_method==
Setup_TearDown.py::Test_D::test_case_2 ==
类里面每个用例执行前都会执行setup_method==
=类里面每个用例执行前都会执行setup=
PASSED [100%]test case 2 run
=类里面每个用例结束后都会执行teardown=
==类里面每个用例结束后都会执行teardown_method==
====整个测试类结束后只执行一次teardown_class====
=====整个.py模块结束后只执行一次=====
说明:
使用Setup 和 Tear down 有一个局限性, 最小层次是方法 或者函数级别, 但是都是针对模块内和
类内部所有的函数或方法, 并不能精细化区分