所以我在一个类中有一个to字符串方法:
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'
任何想法可能是什么原因造成的?
最佳答案
将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'")
关于python - 引发的KeyError异常被两次引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11360474/