Pytest-如何将特定的设置和拆卸功能链接到特定的测试功能?

时间:2018-08-23 13:34:32

标签: python pytest

有人问过类似的问题,但没有一个答案解决了我的问题:

我具有以下3个功能:

def specific_setup_function():
    print("\n\nsetup_function\n\n")


def specific_teardown_function():
    print("\n\nteardown_function\n\n")


def specific_test():
    print('\n\nTEST\n\n')

无论测试模块中还有多少其他功能,如何使pytest在specific_test()之后和specific_setup_function之前执行specific_teardown_function()

在此示例中,它将按指定的顺序执行,因为它们是唯一的函数,但在更一般的情况下,我希望以前的代码始终等同于以下代码:

def test():
    specific_setup_function()
    print('\n\nTEST\n\n')
    specific_teardown_function()

因此specific_test将链接到specific_setup_functionspecific_teardown_function

有办法吗?

1 个答案:

答案 0 :(得分:1)

您将要使用fixtures with a finalizer

@pytest.fixture
def specific_fixture(request):
    print("\n\nsetup_function\n\n")
    def fin():
        print("\n\nteardown_function\n\n")
    request.addfinalizer(fin)
    return 6  # You can return a value from a fixture


def specific_test(specific_fixture):
    print('\n\nTEST: %s\n\n' % specific_fixture)