我有这样的测试设置:
def test1():
with Manager1() as m1, m1.get_m2() as m2:
do_test1(m1, m2)
def test2():
with Manager1() as m1, m1.get_m2() as m2:
do_test2(m1, m2)
我用nosetests
运行它。现在发现上下文管理器的__enter__()
和__exit__()
方法非常昂贵,所以我想改为如下设置:
def test():
with Manager1() as m1, m1.get_m2() as m2:
do_test1(m1, m2)
do_test2(m1, m2)
但我还是想为每个测试分别报告。我研究了模块级和类级的setup()
和teardown()
方法,但它们似乎没有为异常情况下的清理提供相同的保证。有没有干净的方法让nose
与上下文管理器协作?你知道吗
看看鼻子test generation。如果您将代码更改为使用yield,它可能会起作用,例如:
运行测试可以让您:
如果您担心} 中的^{} 类。如果
setup
中引发的异常导致teardown
方法无法调用,那么可以使用^{ExitStack
中出现异常,setup
可以确保管理器类正确关闭。你知道吗相关问题 更多 >
编程相关推荐