gpt4 book ai didi

python 'with'语句及其在类中的使用

转载 作者:太空宇宙 更新时间:2023-11-04 01:31:05 24 4
gpt4 key购买 nike

我有一个 TestCase,它使用套接字进行测试。由于即使在出现某些错误的情况下也应该始终关闭套接字,因此我创建了一个抽象套接字的上下文管理器类。

测试夹具如下所示,其中 MyClassToTest 是要测试的实际类,它在内部使用套接字设备。

with SocketContextManager() as device:
foo = MyClassToTest(device)
# make tests with foo

我想避免在每个测试夹具中重复这两行,但始终将其放入 setUp 中。但是我应该怎么做呢?以下代码

def setUp(self):
with SocketContextManager() as device:
self.foo = MyClassToTest(device)

不起作用,因为设备将在 setUp 结束时关闭。有没有办法像这样处理上下文管理器的实例化,或者我是否必须在每个测试装置中重复它?

最佳答案

根据 the documentation对于拆解:

This is called even if the test method raised an exception

因此您可以在setUp 中打开套接字,并在tearDown 中关闭它。即使您的测试用例引发异常,套接字仍将关闭。

关于python 'with'语句及其在类中的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13874859/

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