1

我在我的django测试中创建了健全性检查,并且遇到了一个我已经考虑过的错误。不幸的是,我的测试失败了,当它应该成功。我正在测试一个页面不存在的情况(404状态码)。错误消息和代码如下。当我添加引号时,我收到的404不是'404'。Django的健康测试显示404不是404

的Django 1.10.2 &的Python 3.4.5

./manage.py test app 

Traceback (most recent call last): 
    File "/tests/dir/tests.py", line 26, in test_404 
    self.assertIs(response.status_code,404) 
AssertionError: 404 is not 404 

from django.test import TestCase 
from django.test import Client 

class SanityCheckTests(TestCase): 
def test_404(self): 
    """ 
    Http Code 404 
    """ 
    client = Client() 

    response = client.get('/test404') 
    print(response) 
    self.assertIs(response.status_code,404) 
+0

在Python的确切对象平等“是”运营商的测试。仅仅因为response.status_code打印为404并不意味着它是一个值为404的整数。尝试打印response.status_code .__ class__或isinstance(response.status_code)并查看所得结果。 –

回答

2

你在正确的轨道上 - 但assertIs确保你有一个对象的同一个实例。你只是想确保他们是equal

因此,你的最后一行改为

self.assertEqual(response.status_code, 404) 
+0

很奇怪我的200代码完整性检查不会失败。它使用assertIs。但我的测试现在感谢! – user1762708

+0

这个问题解释了发生了什么:http://stackoverflow.com/questions/306313/is-operator-behaves-unexpectedly-with-integers – Shadow