我想知道如何在Python中声明一个引发异常?我尝试使用assertRaises(ExpectedException),但测试失败,控制台输出告诉我预期的Exception被引发。
那么我怎么能写这个,以便捕获并断言异常呢?
答案 0 :(得分:1)
AssertRaises()可以测试您从代码中引发的所有异常。
使用assertRaises的语法是:
assertRaises(CustomException, Function that throws the exception, Parameters for function(In case of multiple params, they will be comma separated.))
工作原理:
当遇到assertRaises时,pyUnit执行Try-Except块中提到的函数,其中except块包含CustomException。如果正确处理了异常,则测试通过,否则失败。
有关assertRaises的更多信息,请访问How to properly use unit-testing's assertRaises() with NoneType objects?。
答案 1 :(得分:0)
如果抛出异常的模块和测试代码引用不同命名空间中的异常,则会发生这种情况。
所以,例如,如果你有:
# code_to_be_tested.py
from module_with_exception import * # including CustomException
...
raise CustomException()
# test_code.py
import module_with_exception.CustomException as CE
...
with assertRaises(CE) ...
这是因为这两个文件实际上最终指向不同的类/对象。
所以,有两种解决方法:
from blah import *
之类的操作,请从测试模块本身中获取异常,因为这是它正在提升的那个(即from code_to_be_tested import CustomException
)