Google App Engine Unittest:使用AssertEquals时遇到困难

Nic*_*ner 1 python google-app-engine unit-testing

我对我的GAE应用进行了单元测试:

def test_getNeighborhoodKeys_twoCourses(self):
            cs1110, cs2110 = testutils.setUpSimpleCourses()

            foo = getFooResult()
            bar = getBarResult()

    self.assertEquals(foo, bar) # fails
Run Code Online (Sandbox Code Playgroud)

这是失败:

AssertionError: set([CS 1110: Untitled, CS 2110: Untitled]) != set([CS 2110: Untitled, CS 1110: Untitled])
Run Code Online (Sandbox Code Playgroud)

在我看来,测试应该通过.出了什么问题?

Ale*_*lli 5

看起来像属于集合的项目foobar一些非常时髦的类型覆盖__repr__- 否则,对于普通类型,会有引号来明确说明这些括号内的内容.因此,该类型还必须覆盖__eq__以确定相等条件(否则,默认情况下,两个实例仅在它们是同一实例时才相等).你也可以覆盖__cmp__,但这是一个相当陈旧和尘土飞扬的方法 - 特定的比较,如__eq__现在非常受欢迎!

如果你覆盖__eq__(或者__cmp__就此而言)确保也要覆盖,__hash__因为两个比较相等的实例也具有完全相同的散列是至关重要的,否则使用这些实例作为集合的成员,或者在字典中使用密钥,在非常困难中行为不端预测方式.