我試圖測試視圖的響應代碼,但我要麼301或不存在。Django查看測試返回301或找不到
urls.py
...
url(r'^myview/(?P<view_id>.*)/$', view_myview.index, name='myview'),
...
測試代碼1:
import unittest
from django.test import Client
class SimpleTest(unittest.TestCase):
def setUp(self):
self.client = Client()
def test_details(self):
response = self.client.get('/myview/123')
self.assertEqual(response.status_code, 200)
上面的代碼得到:
AssertionError: 301 != 200
測試代碼2:
import unittest
from django.test import Client
class SimpleTest(unittest.TestCase):
def setUp(self):
self.client = Client()
def test_details(self):
response = self.client.get('/myview/123/')
self.assertEqual(response.status_code, 200)
上面的代碼給出:
Mymodel matching query does not exist.
所有我想做的事就是我的觀點簡單的測試,以確保它們不會拋出一個錯誤代碼,但我似乎無法找到這樣做的正確方法我已經嘗試了很多來自互聯網的建議。有沒有不同的方式傳入view_id?如果我也想拋出一些查詢參數呢?
編輯:更新顯示解決方法我用來完成我想要做的,儘可能可怕。我發現使用dumpdata和fixtures帶走了FOREVER。
from django.test import TestCase
from django.test import Client
import os
from . import urls_to_test # just a simple list of strings
class SimpleTest(TestCase):
""" Simply test if views return status 200 """
def setUp(self):
self.client = Client()
print('Dumping production database...')
os.system("sudo mysqldump mydb > /tmp/mydb.sql")
print('Loading production data into test database...')
os.system("sudo mysql test_mydb < /tmp/mydb.sql")
os.system("sudo rm -rf /tmp/mydb.sql")
def test_details(self):
for u in urls_to_test.test_urls:
print('Testing {}'.format(u))
response = self.client.get(u)
self.assertEqual(response.status_code, 200)
print('{} URLs tested!'.format(len(urls_to_test.test_urls)))
OH,測試的東西不知道我的數據庫。我試圖用已經在我的數據庫中的數據測試視圖(只讀的東西)。我可以與此合作,謝謝!顯然,我是新手。 – user3449833