如何测试在env缺席的情况下上升的异常

时间:2018-01-05 18:12:09

标签: python unit-testing environment-variables

我有一些代码:

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而不是通过测试。我应该纠正什么?

1 个答案:

答案 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中可用。