我写了一个更新环境变量的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的区别?
答案 0 :(得分:2)
我在Python bugtracker中找到了ticket,与unittest
模块中的遗漏方法有关。以下是讨论的引用:
您好,
我是这个bug的原始记者。如果是这样,请原谅我 不是讨论这个问题的地方。
我已经考虑过了,以及诸如assertDictNotEqual之类的东西 assertSequenceNotEqual不是必需的 - 它更容易 (和更短)使用assertNotEqual ,并且不需要任何 需要特殊的格式才能说明事情是平等的 不应该。
但是,这不是assertNotRegexpMatches的情况。 assertNot(re.match(...))只告诉我False不是True。 ID 喜欢说如何文本匹配正则表达式(匹配部分 那是)。 (抱歉重复自己,这次我试着更清楚。)
因此,此问题可以重命名为“实现assertNotRegexpMatches。”
而且,至于我,我不认为assertDictNotEqual
是否有用,因为当断言失败时,恰好有一个。您应该使用assertNotEqual