重写以使其更清晰,但我相信Clark J得到了它。我的文件内容如下:
class tests:
def test1(self):
create something1
def test2(self):
create something2
.
.
.
.
def test19(self):
cleanup something1
def test20(self):
cleanup something2
如果test1或test2失败,它会留下something1,something2。想知道是否使用"尝试:最后:"在下面的样式中是可以的,这样test19和test20每次都会在程序退出之前运行,或者如果有更理想的方式可以这样做。基本上我的目标是确保test19和test20总是在程序退出之前运行,在其他测试中出现故障。感谢。
class tests:
try:
def test1(self):
create something1
def test2(self):
create something2
.
.
.
.
finally:
def test19(self):
cleanup something1
def test20(self):
cleanup something2
答案 0 :(得分:1)
我没有看到你不能使用try finally块的原因。
或者您可以使用atexit模块。在程序完成终止后运行已注册的函数。它是python 2和python 3中标准库的一部分。
import atexit
@atexit.register #decorator call only works for functions without args
def function_to_run_on_exit():
print ("doing some awesome teardown and cleanup")
def exit_function_with_args(foo, bar):
print("cleaning up {} and {}").format(foo, bar))
atexit.register(exit_function_with_args, 'my foo', 'my bar')