有人问过类似的问题,但没有一个答案解决了我的问题:
我具有以下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_function
和specific_teardown_function
。
有办法吗?
答案 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)