我正在尝试对我的更新表单和视图进行单元测试。我使用 Django Crispy Forms 来创建和更新表单。 UpdateForm 继承了 CreateForm 并对提交按钮文本做了一些小改动。 CreateView 和UpdateView 非常相似。它们具有相同的模型、模板和 success_url。它们的不同之处在于使用各自的形式,CreateView继承了django.views.generic.CreateView,UpdateView继承了django.views.generic.edit.UpdateView。
该网站运行良好。我可以毫无问题地创建和编辑对象。但是,我的第二个测试(如下所示)失败了。如何测试我的 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']
当预填充ModelForm
对于已经创建的对象,您可以使用instance
将对象传递给表单的关键字参数。
form = SomeForm(instance=my_obj)
这可以在测试中完成,例如在 OPsave()现有对象将被更新,而不是创建新对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)