(django-testing) assertIs 错误
(django-testing) assertIs error
我尝试了一个简单的测试,并在控制台中收到了这条错误消息:
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'
。但是为什么测试失败了?
首先,我认为可能有错误,但那行代码也没有:
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)
返回了 'hi'
,正如我们可以在上面的堆栈跟踪中看到的那样。
为了便于记忆,我添加了相关行:
self.assertIs(cm.get('hi/du',0), 'hi')
AssertionError: 'hi' is not 'hi'
小细节(不知道这个重要不重要):我是用python3 manage.py test lib/navbar
开始测试的。
所以你知道为什么失败了吗?或者你至少有一些猜测?
感谢您阅读本文!
您需要的断言方法是assertEqual
而不是assertIs
。
assertEqual(a, b)
:比较a和b的值
assertIs(a, b)
: 检查a和b是否指向同一个对象,即a和b的id是否相同
我尝试了一个简单的测试,并在控制台中收到了这条错误消息:
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'
。但是为什么测试失败了?
首先,我认为可能有错误,但那行代码也没有:
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)
返回了 'hi'
,正如我们可以在上面的堆栈跟踪中看到的那样。
为了便于记忆,我添加了相关行:
self.assertIs(cm.get('hi/du',0), 'hi')
AssertionError: 'hi' is not 'hi'
小细节(不知道这个重要不重要):我是用python3 manage.py test lib/navbar
开始测试的。
所以你知道为什么失败了吗?或者你至少有一些猜测? 感谢您阅读本文!
您需要的断言方法是assertEqual
而不是assertIs
。
assertEqual(a, b)
:比较a和b的值
assertIs(a, b)
: 检查a和b是否指向同一个对象,即a和b的id是否相同