使用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
答案 0 :(得分:3)
您正在吞没异常处理程序中的异常,因此您的调用代码(单元测试)无法知道该错误已引发,只能看到您的代码已运行并退出。
考虑重新筹款:
func(filename):
try:
file = open(filename)
except FileNotFoundError:
# Whatever else you want to do
raise
更好的是,您的单元测试不应真正依赖于不存在的文件-单元测试应按定义自包含。考虑模拟open方法,以便您拥有更多控制权。
答案 1 :(得分:1)
使用上下文管理器进行异常
版本2.7中的更改:添加了使用assertRaises()作为上下文管理器的功能。
如果仅给出了异常参数,则返回一个上下文管理器,以便可以将内嵌代码而不是作为函数编写被测代码:
chosenProduct