Django 测试表单集使用什么形式

Django Test what form a formset uses

如果我有这样的表格:

class MyForm(modelForm):
    # Form stuff

还有一个表单集:

MyFormSet = modelformset_factory(
    MyModel,
    form=MyForm,
    max_num=6,
    validate_max=True,
)

有没有办法测试 form=MyForm

def test_formset(self):

    formset = MyFormSet()

    self.assertEqual(formset.max_num, 6)
    self.assertTrue(formset.validate_max)
    # Tried this but it didn't work
    self.assertIsInstance(formset.form, MyForm)

在这种情况下,formset.form 将是 MyForm class 的子 class,而不是它的实例,因此 assertIsInstance 将不起作用。您可以简单地使用以下方式检查它:

def test_formset(self):

    formset = MyFormSet()
    self.assertTrue(issubclass(formset.form, MyForm))

for formset_factory 并且当您不想提供 MyForm 的任何子 class 时,这也将起作用(因为 formset_factory 不会不要修改你的表单 class):

def test_formset(self):

    formset = MyFormSet()
    self.assertEquals(formset.form, MyForm)