本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/27557

一、 概述

  • setup_module / teardown_module
    全局模块级,在 整个模块执行前后 只执行一次
  • setup_class / teardown_class
    类级,在 类执行前后 只执行一次
  • setup_function / teardown_function
    函数级,在类外定义,类外的 每个方法执行前后 都要执行一次
  • set_method / teardown_method
    方法级,类中的 每个方法执行前后 都要执行一次
  • setup / teardown
    在类中,等价于 setup_method / teardown_method,在类中的 每个方法执行前后 都要执行一次

二、示例

下面是一段模拟代码,模拟测试框架执行顺序,便于加深理解。

def setup_module():
    print('模块级 初始化,setup_module running...')

def teardown_module():
    print('模块级 销毁,teardown_module running...')

def setup_function():
    print('函数级 初始化,setup_function running...')

def teardown_function():
    print('函数级 销毁,teardown_function running...')

def test_fun1():
    print('类外测试函数 test_fun1 running...')

def test_fun2():
    print('类外测试函数 test_fun2 running...')

class TestDemo():
    def setup(self):
        print('类内,初始化,setup running...')

    def teardown(self):
        print('类内,销毁,teardown running...')

    def test_x1(self):
        print('类内测试方法 test_x1 running...')

    def test_x2(self):
        print('类内测试方法 test_x2 running...')

运行效果为:

软件测试学习笔记丨Pytest - 测试框架介绍(setup / teardown)_pytest

观察可知,测试框架执行顺序为:模块级(前后只执行一次)-> 函数级(类外,可多个方法,执行多次)-> 类级(前后只执行一次) → 方法级(类内,可多个方法,执行多次)