【发布时间】:2022-01-14 20:38:40
【问题描述】:
我正在尝试测试一个简单的python函数的异常块,如下所示
function_list.py
def option_check():
"""
Function to pick and return an option
"""
try:
# DELETE_FILES_ON_SUCCESS is a config value from constants class. Valid values True/False (boolean)
flag = Constants.DELETE_FILES_ON_SUCCESS
if flag:
return "remove_source_file"
else:
return "keep_source_file"
except Exception as error:
error_message = F"task option_check failed with below error {str(error)}"
raise Exception(f"Error occured: {error}") from error
如何强制和异常对异常块进行单元测试?请注意,我在异常块中的内容是我实际拥有的内容的简化版本。我正在寻找的是一种使用单元测试来测试异常场景来强制异常的方法。 Python版本是3.6
【问题讨论】:
-
我注意到您已将问题标记为“嘲笑”。如果您熟悉 Python 的模拟库,您可以模拟出由您的 try 块调用的函数并让它引发异常。您的 try 块实际上是否如此小以至于不调用任何其他函数?如果是这样,它也可能不会引发任何异常。
-
try 块与此处显示的完全相同。问题是这里检查的值(DELETE_FILES_ON_SUCCESS)来自配置,并且该值可能无效导致异常,这是我在这里尝试测试的,如果无效值导致异常。
-
我明白了。如何模拟这个似乎已经有了一个很好的答案,但我的直觉是这不应该需要处理异常。我不知道您的全部情况,但总的来说,我不希望访问常量会导致异常。每当需要常量时,是否在整个程序中都有错误处理?也许可以在程序启动时加载并验证配置文件,或者可以防止无效值首先进入配置文件?
标签: python unit-testing exception mocking assert