我在理解应该如何为Django设计单元测试方面遇到问题。
从我的理解来看,一次性测试整个视图似乎是不可能的。我们需要区分请求的发布前和发布后状态。但是我不知道该如何设计。有没有现实生活中的例子?
查看文档,这些示例过于简化,仅关注模型。
@login_required
def call_view(request, contact_id):
profile = request.user.get_profile()
if request.POST:
form = CallsForm(profile.company, request.POST)
if form.is_valid()
return HttpResponseRedirect('/contact/' + contact_id + '/calls/')
else:
form = CallsForm(profile.company, instance=call)
variables = RequestContext(request, {'form':form}
return render_to_response('conversation.html', variables)
更新:
尝试使成功的测试工作成功,但仍然失败:
def test_contact_view_success(self):
# same again, but with valid data, then
self.client.login(username='username1', password='password1')
response = self.client.post('/contact/add/', {u'last_name': [u'Johnson'], })
self.assertRedirects(response, '/')
错误信息:
AssertionError: Response didn't redirect as expected: Response code was 200 (expected 302)
我认为这是因为form.is_valid()失败并且它不会重定向,对吗?
render()
快捷方式,而不是手动创建的RequestContext
并调用render_to_response()
每个时间;return render(request, 'conversation.html', variables)