测试一个类是否从另一个类继承
这个问题更偏向于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
有没有什么方法可以做到这一点呢?
2 个回答
15
可以使用内置的 issubclass
函数。比如:
issubclass(QuizForm, forms.Form)
这个函数会返回一个 bool
值,所以你可以直接在 self.assertTrue()
中使用它。
160
使用 issubclass(myclass, parentclass) 这个函数。
在你的例子中:
self.assertTrue( issubclass(QuizForm, forms.Form) )