1
我已经尝试了简单的测试,并得到了在控制台此错误消息:(Django的测试)assertIs错误
AIL: test_get (navbar.test.ContextManagerTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/media/me/049C11249C1111B2/backup me/Freizeit/Django Projekte/mysitetest/lib/navbar/test.py", line 16, in test_get
self.assertIs(cm.get('hi/du',0), 'hi')
AssertionError: 'hi' is not 'hi'
我们可以在最后一行看到,cm.get('hi/du',0)
返回'hi'
。但为什么测试失败了?
首先,我thaught有可能是一个错误,但无论是代码行:
self.assertIs('hi','hi')
也不是这一个:
self.assertIs(['hi'][0],'hi')
也不是这一个:
self.assertIs(cm.get('hi',0),'hi')
失败。
为了更好的理解,我想补充的cm.get(mypattern,number)
代码:
def get(self, mypattern, number):
parts = mypattern.split('/').strip()
return parts[number]
这是测试的失败代码:
def test_get(self):
cm = context.ContextManager([])
self.assertIs(cm.get('hi',0), 'hi')
self.assertIs(cm.get('hi/du',0), 'hi') #this line failed
self.assertIs(cm.get('hi/du',1), 'du')
它看起来像有split()
功能有些麻烦,但至少有cm.get('hi/du',0)
返回ned 'hi'
,因为我们可以在上面的堆栈跟踪中。
对于记得我加入了相关线路:
self.assertIs(cm.get('hi/du',0), 'hi')
AssertionError: 'hi' is not 'hi'
小细节(我不知道这是否是重要的):我开始试验用python3 manage.py test lib/navbar
。
所以你知道为什么失败?或者你至少有一些猜测? 感谢您阅读本文!
您能不能给一些更多的信息上什么是'context.ContextManager'。 为什么你需要使用assertIs? ,基本上它断言对象是否相同。我想你可以使用AsserEqual,如果你只是想比较值。 –
坦克你!那是我需要的信息。把它写成答案,我会将其标记为已解决。那是误会。有时它至少比它看起来容易;-) – Asqiir