简单 python 函数的单元测试异常块

Unit Test exception block of simple python function

我正在尝试测试一个简单的 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

您可以修补 Constants class 并删除您从模拟中访问的属性。

from unittest import mock

# replace __main__ with the package Constants is from
with mock.patch("__main__.Constants") as mock_constants:
    del mock_constants.DELETE_FILES_ON_SUCCESS
    option_check()

option_check() 尝试访问 Constants.DELETE_FILES_ON_SUCCESS 时,它会引发一个 AttributeError,让您到达 except 块。