Pytest 单元测试框架之初始化和清除环境

1、方法级别初始化、清除

  • pytest 中的 setup 和 teardown
  • 在每个方法执行前后都会执行一次
  • 固定函数名称如下(函数名称不能写错
def setup(self):
    print("setup_function--->")

def teardown(self):
    print("teardown_function--->")
def setup_method(cls):
    print("setup_function--->")

def teardown_method(cls):
    print("teardown_function--->")
  • 实例如下
import pytest

class Test():
    def setup(self):
        print("setup_function--->")

    def teardown(self):
        print("teardown_function--->")

    def test_01(self):
        print("深圳多测师")

    def test_02(self):
        print("广州多测师")

    def test_03(self):
        print("上海多测师")

if __name__ == '__main__':
    pytest.main(["-s","test_demo1.py"])

# 结果如下
test_demo1.py 

setup_function--->
深圳多测师
.teardown_function--->

setup_function--->
广州多测师
.teardown_function--->

setup_function--->
上海多测师
.teardown_function--->

 

2、模块级别初始化、清除

  • 分别在整个模块中所有类中的内容执行前后运行setup_module和teardown_module
  • 设置全局方法 def setup_module() 和 def teardown_module()
# 定义全局方法
def setup_module():
    print("setup_function--->")

def teardown_module():
    print("teardown_function--->")

class Test01():

    def test_01(self):
        print("深圳多测师")

    def test_02(self):
        print("广州多测师")

class Test02():

    def test_03(self):
        print("上海多测师")

# 结果如下

collected 3 items
test_demo1.py 

setup_function--->
深圳多测师
.广州多测师
.上海多测师
.teardown_function--->

 

3、类级别初始化、清除

  • 在类中添加类方法 def setup_class(cls) 和 def teardown_class(cls)
  • 在定义了类方法 def setup_class(cls) 和 def teardown_class(cls) 的类中所有的用例执行前后只执行一次
class Test01():
    @classmethod
    def setup_class(cls):
        print("setup_function--->")

    @classmethod
    def teardown_class(cls):
        print("teardown_function--->")

    def test_01(self):
        print("深圳多测师")

    def test_02(self):
        print("广州多测师")

class Test02():

    def test_03(self):
        print("上海多测师")

# 结果如下
collected 3 items                                                                                            
test_demo1.py 

setup_function--->
深圳多测师
.广州多测师
.teardown_function--->

# 如下的用例打印前后未执行初始化和清除操作
上海多测师
.

 

posted @ 2020-05-13 17:54  一个老宅男  阅读(1492)  评论(0编辑  收藏  举报