测试一个类是否继承自另一个类

这个问题更多的是与 Python 相关,而不是与 Django 相关。我想要测试为这个函数编写一个测试,我用它来动态地获得一个 Django 表单,其中包含我设置的字段。

def quiz_form_factory(question):
properties = {
'question': forms.IntegerField(widget=forms.HiddenInput, initial=question.id),
'answers': forms.ModelChoiceField(queryset=question.answers_set)
}
return type('QuizForm', (forms.Form,), properties)

我想测试返回的 QuizForm 类是否从 forms.Form 继承。

比如:

self.assertTrue(QuizForm isinheritedfrom forms.Form)  # I know this does not exist

有什么办法吗?

55022 次浏览

Use issubclass(myclass, parentclass).

In your case:

self.assertTrue( issubclass(QuizForm, forms.Form) )

Use the built-in issubclass function. e.g.

issubclass(QuizForm, forms.Form)

It returns a bool so you can use it directly in self.assertTrue()