1

プロジェクトをテストしていて、django フォームをテストする必要がありますが、その方法がわかりません。コードは次のとおりです。

if request.method == 'POST': # If the form has been submitted...
    name_add = request.POST.get("name")
    form = AddForm(request.POST) # A form bound to the POST datas
    not_add = 0
    if form.is_valid(): # All validation rules pass
        for n in Product.objects.filter(dashboard = curr_dashboard):
            if n.name == name_add:
                not_add = 1
        if not_add != 1:
            obj = form.save(commit=False)
            obj.dashboard = curr_dashboard
            obj.save()
            curr_buylist.add_product(obj.id)
            return HttpResponseRedirect(request.get_full_path()) # Redirect after POST
        else:
            forms.ValidationError("You already have this")
            return HttpResponseRedirect(request.get_full_path())

ここで検証し、データベースに追加します。しかし、どうすればテストできますか? テストで書いたものはこちら

def test_index_form(self):
    request = self.factory.post('main/index')
    request.user = User.objects.get(username= 'admin')
    response = index(request)

    self.assertEqual(response.status_code, 200)
4

1 に答える 1

1

あなたのテストは良いスタートだと思います。残念ながら、フォームが無効な場合をテストするだけです。ステータス コードのテストに加えて、正しいテンプレートが読み込まれていることもテストします。おそらく、バインドされていないフォームがコンテキスト内にあることもテストします (基本的に、ビュー内の正しい条件が期待どおりに実行されることをテストします)。

self.assertTemplateUsed(response, 'your_template.html')
self.assertIsInstance(response.context['form'], AddForm)

テストで有効なフォーム データを提供し、期待どおりに新しいオブジェクトが作成されることを確認することも考えられます。

また、無効なデータをビューに投稿し、期待どおりにリダイレクトが発行されることを確認することもお勧めします。

于 2013-10-22T15:30:33.093 に答える