python - (django 测试)assertIs 错误

标签 python django automated-tests assertions django-testing

我尝试了一个简单的测试,并在控制台中收到此错误消息:

 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是否相同

关于python - (django 测试)assertIs 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42516429/

相关文章:

xcode - 我可以多次运行 XCTest 套件吗?

testing - Jmeter OS 进程采样器

Python Selenium 检查复选框输入中的全选

Python 列出要列出的字符串

python - 使用中间件为django中的 View 函数添加参数

python - 如何解决类型错误: RelatedManager object is not iterable

python - 我想解析一个大的 csv 文件并将其上传到 mysql 数据库中,但它需要很长时间。 Python/Django

python - 如何在 Amazon S3 中复制大于 5 GB 的文件?

Python:获取 '3 years ago today' 的日期时间

python - 从父类别 django rest 获取所有产品