python - 如何正确地对 FileNotFoundError 进行单元测试

标签 python unit-testing

使用 unittest 模块,如何测试打开文件时引发的 FileNotFoundError,如下所示:

func(filename):
    try:
        file = open(filename)
    except FileNotFoundError:
        exit()

单元测试模块

class TestFunc(unittest.TestCase):

    def test_func(self):
        self.assertRaises(FileNotFoundError, func, "no_exist.txt")

结果错误

AssertionError: FileNotFoundError not raised by func

最佳答案

您正在异常处理程序中吞噬异常,因此您的调用代码(单元测试)无法知道已引发错误,它所看到的只是您的代码已经运行并退出。

考虑再次加注:

func(filename):
    try:
        file = open(filename)
    except FileNotFoundError:
        # Whatever else you want to do 
        raise

更好的是,您的单元测试不应该真正依赖于不存在的文件 - 单元测试应该根据定义自包含。考虑模拟 open 方法,以便您拥有更多控制权。

关于python - 如何正确地对 FileNotFoundError 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51986259/

相关文章:

python - Keras:如何为 CNN 和 LSTM 层塑造输入?

python - 消除嵌套循环

python - Mock : Tracking all Calls. Shell 与程序不一致

c# - 单元测试不会运行 : process is terminated due to StackOverflowException

c++ - 使用 Visual Studio 2019 和 cmake 进行谷歌测试

python - 当我在 shell 窗口中收到错误时,是否可以创建弹出消息?

python - 如何在 QWidget 中居中背景图像

python - 如何用python找到串行流的第一个字节?

java - 单元测试静态方法

java - 使用 PowerMock 模拟链式方法调用