我尝试在tests.py中创建一个测试
class TaskViewTests(TestCase):
def test_task_view_with_no_task(self):
"""
If no task exist, an appropriate message should be displayed.
"""
userName = 'esutek'
response = self.client.get(reverse('actuser:task',args=(userName,)))
self.assertEqual(response.status_code, 200)
self.assertContains(response, "No task are available.")
self.assertQuerysetEqual(response.context['taskList'], [])
然而它给了我这个错误信息。 我不知道为什么会发生这种情况。我只是按照教程。
actuser:任务 views.py
def task(request, userName):
""" User task list in actInbox
"""
user = ActuserViewModel()
user.get_task_list(userName)
return render(request, 'actuser/task.html', {
'userName': userName,
'taskList': user.taskList,
'dateToday': user.dateToday,
})
viewmodels.py
def get_task_list(self, userName):
self.taskList = Task.objects.filter(executor = userName, parent_task_id=EMPTY_UUID).order_by('due_date')
#get date now with this format 05/11
self.dateToday = datetime.date.today()
其实我有2个网址......
这是来自项目
url(r'^(?P<userName>[0-9a-zA-Z--]+)/', include('actuser.urls', namespace="actuser")),
这个是来自actuser.urls
url(r'^task/$', views.task, name='task'),
答案 0 :(得分:3)
HTTP 302表示您被重定向到其他某个网址。例如,如果您使用RedirectView,或者如果您忘记在请求URL的末尾写斜杠并且启用了APPEND_SLASH(在这种情况下,您获得HTTP),则可以故意进行重定向301而不是302)。
你最后需要一个斜杠:
url(r'^(?P<userName>[0-9a-zA-Z-]+)/task/$', ...
答案 1 :(得分:1)
如果您的视图需要登录,您可能会获得重定向。
您需要先登录,这是一个很好的示例: Django: test failing on a view with @login_required
简而言之:
class LoginTestCase(TestCase):
def setUp(self):
self.client = Client()
self.user = User.objects.create_user('john', 'lennon@thebeatles.com', 'johnpassword')
def testLogin(self):
self.client.login(username='john', password='johnpassword')
response = self.client.get(reverse('testlogin-view'))
self.assertEqual(response.status_code, 200)