gpt4 book ai didi

python - unittest.mock.补丁 : Context manager vs setUp/tearDown in unittest

转载 作者:太空狗 更新时间:2023-10-30 01:14:56 33 4
gpt4 key购买 nike

似乎有两种使用方式 unittest.mock.patch : 有更好的方法吗?

使用上下文管理器和 with 语句:

class MyTest(TestCase):
def test_something(self):
with patch('package.module.Class') as MockClass:
assert package.module.Class is MockClass

或者从设置和拆卸/清理中调用启动和停止:

class MyTest(TestCase):
def setUp(self):
patcher = patch('package.module.Class')
self.MockClass = patcher.start()
self.addCleanup(patcher.stop)

def test_something(self):
assert package.module.Class is self.MockClass

context manager 版本的代码更少,因此更易于阅读。我有什么理由更愿意使用 TestCase setUp/tearDown 基础架构?

最佳答案

喜欢在 setUp 中打补丁的主要原因是,如果您有多个测试需要打补丁。在这种情况下,您需要在每个测试中复制 with 语句。

如果您只有一个测试需要补丁,我更喜欢 with 语句以提高可读性。

关于python - unittest.mock.补丁 : Context manager vs setUp/tearDown in unittest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26100005/

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