1
我有一個單元測試,我的GAE應用程序:谷歌App Engine的單元測試:困難的assertEquals
def test_getNeighborhoodKeys_twoCourses(self):
cs1110, cs2110 = testutils.setUpSimpleCourses()
foo = getFooResult()
bar = getBarResult()
self.assertEquals(foo, bar) # fails
這是失敗的:
AssertionError: set([CS 1110: Untitled, CS 2110: Untitled]) != set([CS 2110: Untitled, CS 1110: Untitled])
它看起來對我來說,測試應該通過。出了什麼問題?
實際上,我自己覆蓋'__repr__'來使調試更容易。這是一個糟糕的決定嗎?如果我要重寫'__str__'呢?我可以離開'__eq__'和'__hash__'嗎? – 2010-06-19 19:16:26
@Rosarch,只要你希望用戶編碼類型的實例能夠比較相同而不相同(即相同的實例),你需要重寫'__eq__'(和'__hash__')提到'__repr__'的覆蓋是因爲可以立即在你顯示的消息中發現什麼,並且證明這些實例屬於某種時髦的類型並且不是完全相同的實例,**不**因爲覆蓋有任何做平等測試本身。 – 2010-06-19 19:24:10