请帮助编写测试。
解决:
/edit_records/38/
使用视图edit_records()。
以下是对它的测试:
def test_edit_records(self):
resolver = resolve('/edit_records/38/')
self.assertEqual(resolver.func, edit_records)
还有一个地址:
/edit_records/38/
POST={
q:1,
w:2
}
视图应该使用my_records()
这是一个非工作测试:
def test_edit_records_POST(self):
resolver = resolve('/edit_records/38/', {q:1, w:2})
self.assertEqual(resolver.func, my_records)
这是一个观点,如果你想:
def edit_records(request, id_record):
entry = Diary.get_entry(id_record=id_record, user_id=request.user.pk)
form = addMessageForm(instance=entry)
if request.method == 'POST':
form = addMessageForm(request.POST, request.FILES, instance=entry)
if form.is_valid():
form.save()
return HttpResponseRedirect('/my_records/')
t = loader.get_template('page_edit_records.html')
c = RequestContext(request, {
'form': form,
})
return HttpResponse(t.render(c))
答案 0 :(得分:1)
我不太确定你为什么要用resolver
做所有这些事情。这与单元测试并不完全相关;你不能自己调用视图,因此你没有测试它的任何实际功能,你在这里测试的唯一一件事就是Django的URL解析器。
相反,您应该使用测试客户端提供的功能来实际调用您的视图:
def test_edit_records(self):
response = self.client.get('/edit_records/38/')
self.assertContains(response, 'some data you expect to see in the response')
你可以用POST做同样的事情:
def test_edit_records_POST(self):
response = self.client.POST('/edit_records/38/', {q:1, w:2})
self.assertTrue(something_about_the_response)