所以我在我的一个班级中有一个字符串方法:
def __str__(self):
# some irrelevant code
raise KeyError("aaa")
然后在我的测试中,我做了:
with self.assertRaises(KeyError) as cm:
str(myobject)
self.assertEquals("%s" % cm.exception, "aaa")
我得到了这个输出:
self.assertEquals("%s" % cm.exception, "aaa")
AssertionError: "'aaa'" != 'aaa'
任何可能导致此问题的想法?
答案 0 :(得分:3)
将KeyError
格式化为字符串时,会包含违规键的表示形式:
>>> d = {}
>>> d[2]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 2
>>> d["a"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'a'
字符串的表示形式包括周围的单引号,因此您应该使用
self.assertEquals("%s" % cm.exception, "'aaa'")
或更直接的
self.assertEquals(str(cm.exception), "'aaa'")