gpt4 book ai didi

python - 如何从模拟实例的方法抛出异常?

转载 作者:行者123 更新时间:2023-12-02 06:16:52 24 4
gpt4 key购买 nike

我想测试的这个演示函数非常简单。

def is_email_deliverable(email):
try:
return external.verify(email)
except Exception:
logger.error("External failed failed")
return False

此函数使用我想要模拟的外部服务。

但我不知道如何从 external.verify(email) 抛出异常,即如何强制 except 子句待执行。

我的尝试:

@patch.object(other_module, 'external')
def test_is_email_deliverable(patched_external):
def my_side_effect(email):
raise Exception("Test")

patched_external.verify.side_effects = my_side_effect
# Or,
# patched_external.verify.side_effects = Exception("Test")
# Or,
# patched_external.verify.side_effects = Mock(side_effect=Exception("Test"))

assert is_email_deliverable("some_mail@domain.com") == False

This问题声称有答案,但对我不起作用。

最佳答案

您使用了 side_effects 而不是 side_effect。是这样的

@patch.object(Class, "attribute")
def foo(attribute):
attribute.side_effect = Exception()
# Other things can go here

顺便说一句,捕获所有异常并根据它进行处理并不是一个好方法。

关于python - 如何从模拟实例的方法抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48606314/

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