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