gpt4 book ai didi

python - PyTest 跳过 module_teardown()

转载 作者:行者123 更新时间:2023-11-28 16:31:32 24 4
gpt4 key购买 nike

我的测试模块中有以下代码

def teardown_module():
clean_database()
def test1(): pass
def test2(): assert 0

并且我希望只有在某些测试失败时才调用 teardown_module()(一些清理代码)。否则(如果全部通过)不必调用此代码。我可以用 PyTest 做这样的把戏吗?

最佳答案

可以。但这有点像黑客。如此处所写:http://pytest.org/latest/example/simple.html#making-test-result-information-available-in-fixtures您执行以下操作,以设置用于保存测试调用每个阶段状态的属性:

# content of conftest.py
import pytest
@pytest.mark.tryfirst
def pytest_runtest_makereport(item, call, __multicall__):
rep = __multicall__.execute()
setattr(item, "rep_" + rep.when, rep)
return rep

在 fixture 中,您只需像这样检查这些属性的条件:

import pytest
@pytest.yield_fixture(scope="module", autouse=True)
def myfixture(request):
print "SETUP"
yield
# probably should not use "_collected" to iterate over test functions
if any(call.rep_call.outcome != "passed" for call in request.node._collected):
print "TEARDOWN"

这样,如果与该模块 fixture 关联的任何测试未“通过”(因此“失败”或“跳过”),则条件成立。

关于python - PyTest 跳过 module_teardown(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31432013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com