在 py.test 中的每个测试之前和之后运行代码?

2024-03-26

我想在测试套件中的每个测试之前和之后运行额外的设置和拆卸检查。我看过固定装置,但不确定它们是否是正确的方法。我需要在每次测试之前运行设置代码,并且需要在每次测试后运行拆卸检查。

我的用例是检查未正确清理的代码:它会留下临时文件。在我的设置中,我将检查文件,在拆卸中我也会检查文件。如果有额外的文件我希望测试失败。


py.test 装置在技术上是实现您的目的的足够方法。

你只需要定义一个像这样的装置:

@pytest.fixture(autouse=True)
def run_around_tests():
    # Code that will run before your test, for example:
    files_before = # ... do something to check the existing files
    # A test function will be run at this point
    yield
    # Code that will run after your test, for example:
    files_after = # ... do something to check the existing files
    assert files_before == files_after

通过声明你的装置autouse=True,它将自动为同一模块中定义的每个测试函数调用。

也就是说,有一个警告。在设置/拆卸时断言是一种有争议的做法。我的印象是 py.test 主要作者不喜欢它(我也不喜欢它,所以这可能会影响我自己的看法),所以你在前进时可能会遇到一些问题或粗糙的边缘。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 py.test 中的每个测试之前和之后运行代码? 的相关文章

随机推荐