【发布时间】:2016-11-29 21:47:42
【问题描述】:
我正在尝试测试视图的响应代码,但我得到 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?如果我还想输入一些查询参数怎么办?
编辑:更新以显示我用来完成我正在尝试做的事情的解决方法,尽管它可能很可怕。我发现使用转储数据和固定装置需要永远。
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)))
【问题讨论】:
标签: django django-views django-testing