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

时间:2018-08-23 12:50:27

标签: python unit-testing

使用unittest模块,如下所述打开文件时,如何测试FileNotFoundError

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

Unittest模块

class TestFunc(unittest.TestCase):

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

产生的错误

  

AssertionError:函数未引发FileNotFoundError

2 个答案:

答案 0 :(得分:3)

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

考虑重新筹款:

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

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

答案 1 :(得分:1)

使用上下文管理器进行异常

  

版本2.7中的更改:添加了使用assertRaises()作为上下文管理器的功能。

     

如果仅给出了异常参数,则返回一个上下文管理器,以便可以将内嵌代码而不是作为函数编写被测代码:

chosenProduct