私は更新フォームとビューをユニットテストしようとしています。私は、私の作成フォームと更新フォームの両方にDjango Crispy Formsを使用しています。 UpdateFormはCreateFormを継承し、送信ボタンのテキストを少し変更します。 CreateViewとUpdateViewは非常によく似ています。モデル、テンプレート、およびsuccess_urlは同じです。それらはそれぞれのフォームを使用する点で異なり、CreateViewはdjango.views.generic.CreateViewを継承し、UpdateViewはdjango.views.generic.edit.UpdateViewを継承します。Django:単体テストの更新ビュー/フォーム
ウェブサイトは正常に動作します。問題なくオブジェクトを作成して編集することができます。しかし、私の2番目のテストは失敗します。 UpdateFormをテストするにはどうすればよいですか?
ご協力いただければ幸いです。ありがとう。
このテストに合格:
class CreateFormTest(TestCase):
def setUp(self):
self.valid_data = {
'x': 'foo',
'y': 'bar',
}
def test_create_form_valid(self):
""" Test CreateForm with valid data """
form = CreateForm(data=self.valid_data)
self.assertTrue(form.is_valid())
obj = form.save()
self.assertEqual(obj.x, self.valid_data['x'])
このテストは失敗します。
class UpdateFormTest(TestCase):
def setUp(self):
self.obj = Factories.create_obj() # Creates the object
def test_update_form_valid(self):
""" Test UpdateForm with valid data """
valid_data = model_to_dict(self.obj)
valid_data['x'] = 'new'
form = UpdateForm(valid_data)
self.assertTrue(form.is_valid())
case = form.save()
self.assertEqual(case.defendant, self.valid_data['defendant']
あなたが探しているものは 'form = UpdateForm(instance = self.obj) 'です。 – IanAuld
これはそのトリックでした。ありがとうございました!あなたが答えを出したら、私はそれを受け入れます。 – Eric