小编lut*_*tar的帖子

是否能保证yield之后的代码一定会被执行?

假设我们有一个固定装置,它分配了一些非托管资源并释放它们,如下例所示:

@pytest.fixture
def resource():
    res = driver.Instance()
    yield res

    res.close()
Run Code Online (Sandbox Code Playgroud)

即使在使用该夹具的测试过程中发生问题,是否可以保证资源会被释放?

如果没有这样的保证,也许下面的模式会更好?

@pytest.fixture
def resource(q):
    res = driver.Instance()

    def finalize():
        res.close()

    q.addfinalizer(finalize())
    return res
Run Code Online (Sandbox Code Playgroud)

python yield pytest

4
推荐指数
1
解决办法
991
查看次数

标签 统计

pytest ×1

python ×1

yield ×1