我有一些代码:
if not settings.VAR_URL:
raise Exception("VAR_URL is not defined")
当我尝试测试它时:
def test_for_absent_env(self):
del os.environ['VAR_URL']
o = Object()
with self.assertRaises(Exception) as error:
o.some_function()
self.assertEqual(error.exception.message, "VAR_URL is not defined")
但是它给出KeyError
而不是通过测试。我应该纠正什么?
答案 0 :(得分:1)
如果引发异常,那不是你应该测试的方式。有一个名为assertRaises
的特定断言,可以用作上下文管理器(helps to then get the error message to check as well):
with self.assertRaises(Exception) as error:
o.some_cool_function()
self.assertEqual(error.exception.message, "VAR_URL is not defined")
请注意,使用assertRaises
作为上下文管理器的功能在Python> = 3.1中可用。