Django Тест, какую форму использует formset - PullRequest
0 голосов
/ 26 января 2019

Если у меня есть такая форма:

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)

1 Ответ

0 голосов
/ 26 января 2019

В этом случае formset.form будет подклассом класса MyForm, а не его экземпляром, поэтому assertIsInstance не будет работать.Вы можете проверить это просто, используя:

def test_formset(self):

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

для formset_factory, и если вы не хотите предоставлять какой-либо подкласс MyForm, это также будет работать (как formset_factory won 'изменить класс формы):

def test_formset(self):

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