pytest 测试用例初始化的五种方法

在unittest中的前置和后置setup和teardown很好用,还有类前置与类后置方法 setupClass和teardownClass,当然需要配合@classmethod装饰器使用。pytest中也提供了类似的函数,以及更多的函数:

 

  • 模块级别(setup_module/teardown_module) 全局的

  • 函数级别(setup_function/teardown_function) 只对函数用例生效(不在类中的)

  • 类级别 (setup_class/teardown_class) 只在类中前后运行一次(只在类中才生效)

  • 方法级别 (setup_method/teardown_method) 开始后与方法始末(在类中)

  • 类内用例初始化结束 (setup/teardown) 运行在测试用例的前后

 

产生作用的范围如下:

setup_module
----setup_function
--------test_out_class    #类外测试用例
----teardown_function
----setup_class
--------setup_method
------------setup
----------------test_in_class1    #类内测试用例一
------------teardown
--------teardown_method
--------setup_method
------------setup
----------------test_in_class2    #类内测试用例二
------------teardown
--------teardown_method
----teardown_class
teardown_module

 

示例代码:

# setup_teardown.py
# --encoding=utf-8 --

import pytest

def setup_module():
    print('\nsetup_module 执行')

def teardown_module():
    print('\nteardown_module 执行')

def setup_function():
    """函数方法(类外)初始化"""
    print('setup_function 执行')

def teardown_function():
    """函数方法(类外)初始化"""
    print('\nteardown_function 执行')

def test_in_class():
    """类(套件)外的测试用例"""
    print('类外测试用例')

class Test_clazz(object):
    """测试类"""

    def setup_class(self):
        print('setup_class 执行')

    def teardown_class(self):
        print('teardown_class 执行')

    def setup_method(self):
        print('setup_method 执行')

    def teardown_method(self0):
        print('teardown_method 执行')

    def setup(self):
        print('\nsetup 执行')

    def teardown(self):
        print('\nteardown 执行')

    def test_case001(self):
        """测试用例一"""
        print('测试用例一')

    def test_case002(self):
        """测试用例二"""
        print('测试用例二')

 

输出结果:

setup_teardown.py::test_in_class
setup_module 执行

setup_function 执行
类外测试用例
PASSED
teardown_function 执行

setup_teardown.py::Test_clazz::test_case001 
setup_class 执行
setup_method 执行

setup 执行
测试用例一
PASSED
teardown 执行

teardown_method 执行

setup_teardown.py::Test_clazz::test_case002 
setup_method 执行

setup 执行
测试用例二
PASSED
teardown 执行

teardown_method 执行

teardown_class 执行
teardown_module 执行

 

 

 

 

你可能感兴趣的:(pytest)