Python 如何使用pytest仅为特定测试运行清理代码?

Python 如何使用pytest仅为特定测试运行清理代码?,python,pytest,Python,Pytest,有了pytest,就可以单独在特定的测试函数/方法上运行清理代码。我知道我们可以这样做来运行每个测试函数。但在这里,我想放置一些特定于单个测试函数的清理逻辑 我可以把清理代码放在测试的末尾。但如果测试失败,则无法进行清理。使用清理代码创建一个fixture,并通过使用fixture作为测试参数或使用decorator显式标记测试,将其仅注入到一个测试中 import pytest @pytest.fixture def my_cleanup_fixture(): # Startup c

有了pytest,就可以单独在特定的测试函数/方法上运行清理代码。我知道我们可以这样做来运行每个测试函数。但在这里,我想放置一些特定于单个测试函数的清理逻辑


我可以把清理代码放在测试的末尾。但如果测试失败,则无法进行清理。

使用清理代码创建一个fixture,并通过使用fixture作为测试参数或使用decorator显式标记测试,将其仅注入到一个测试中

import pytest

@pytest.fixture
def my_cleanup_fixture():
    # Startup code
    ...
    yield
    # Cleanup code
    ...

@pytest.mark.usefixtures('my_cleanup_fixture')
def test_with_special_cleanup():
    pass

my_cleanup\u fixture
默认情况下具有作用域
功能
,因此启动和清理代码将针对注入的每个功能运行。

查看文档中的pytest fixture,您可以将清理代码放在fixture中的yield语句之后。默认情况下,fixture拆卸代码对于模块中的所有测试只能运行一次或在每个测试之后运行一次。我希望特定的清理代码只为一个测试函数运行,这取决于fixture的范围。可以创建一个可以调用设置(或另一个具有设置代码的设备)的新设备,并在新设备中以拆卸方式进行清理。