ビューの応答コードをテストしようとしていますが、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に渡す別の方法はありますか?いくつかのクエリパラメータを投げたい場合はどうすればいいですか?
EDIT:私がやっていることを達成するために使った回避策を恐ろしく表示します。私はdumpdataと什器を使用することは永遠に行ったことが分かりました。
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