如何对assertDictNotEqual进行单元测试?

时间:2016-01-19 09:03:11

标签: python dictionary python-unittest

我写了一个更新环境变量的contextlib,并为unittest写了test:

previous_env = copy.deepcopy(os.environ)
with MYContext() as my_context:
    with self.assertRaises(AssertionError):
        self.assertDictEqual(dict(os.environ), dict(previous_env))
self.assertDictEqual(dict(os.environ), dict(previous_env))

但是我想知道我是否能比使用with self.assertRaises(AssertionError)更好地断言dict的区别?

1 个答案:

答案 0 :(得分:2)

我在Python bugtracker中找到了ticket,与unittest模块中的遗漏方法有关。以下是讨论的引用:

  

您好,

     

我是这个bug的原始记者。如果是这样,请原谅我   不是讨论这个问题的地方。

     

我已经考虑过了,以及诸如assertDictNotEqual之类的东西   assertSequenceNotEqual不是必需的 - 它更容易   (和更短)使用assertNotEqual ,并且不需要任何   需要特殊的格式才能说明事情是平等的   不应该。

     

但是,这不是assertNotRegexpMatches的情况。   assertNot(re.match(...))只告诉我False不是True。 ID   喜欢说如何文本匹配正则表达式(匹配部分   那是)。 (抱歉重复自己,这次我试着更清楚。)

     

因此,此问题可以重命名为“实现assertNotRegexpMatches。”

而且,至于我,我不认为assertDictNotEqual是否有用,因为当断言失败时,恰好有一个。您应该使用assertNotEqual