gpt4 book ai didi

python - pytest:如果设置出现问题,如何跳过测试用例并直接跳转到清理?

转载 作者:行者123 更新时间:2023-12-04 19:25:00 25 4
gpt4 key购买 nike

我知道在 pytest 中,设置和清理的首选方法是使用 yield , 喜欢

class TestSomething():
@pytest.fixture(scope="class", autouse=True)
def setup_cleanup(self, request):
...
yield
...

def test_something(self):
...

问题是,如果设置部分出现故障,在 yield之前发生时,清理代码将没有机会运行。

是否有可能,当设置中发生某些严重故障时,会跳过所有测试用例,并由清理接管控制权(在 yield 方法中的 setup_cleanup 之后)?

最佳答案

setup_cleanup触发测试函数,但它仍然是一个函数。在任何步骤中引发的异常都会阻止它的其余部分被激发。

解决方法是使用 try finally .它将允许测试和拆卸运行而不会吞下异常

@pytest.fixture(scope="class", autouse=True)
def setup_cleanup(self, request):
try:
print('Setup')
raise Exception("Setup Exception")
yield
finally:
print('Teardown')

def test_example_test(self):
print('Test')

有这个特例
Setup
Teardown

test setup failed
self = <ExampleTest.TestSomething object at 0x045E6230>
request = <SubRequest 'setup_cleanup' for <Function test_something>>

@pytest.fixture(scope="class", autouse=True)
def setup_cleanup(self, request):
print()
try:
print('Setup')
> raise Exception("Setup Exception")
E Exception: Setup Exception

而没有
Setup
.Test
Teardown

关于python - pytest:如果设置出现问题,如何跳过测试用例并直接跳转到清理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59796407/

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