django の単体テストをどのように設計する必要があるかを理解するのに問題があります。
私の理解では、ビュー全体を一度にテストすることは不可能に思えます。リクエストの pre-post 状態と post 状態を区別する必要があります。しかし、私はこれを設計する方法がわかりません。実際の例はありますか?
ドキュメントを見ると、例が単純化されすぎており、モデルのみに焦点が当てられています。
@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() が失敗してリダイレクトされないためだと思いますよね?