1

したがって、クラスの1つにto stringメソッドがあります。

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'

これを引き起こしている可能性のあるアイデアはありますか?

4

1 に答える 1

3

a を文字列としてフォーマットする場合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'")
于 2012-07-06T10:37:31.517 に答える