python - tutorial - the django project
Prueba si una clase se hereda de otro (4)
Esta pregunta ya tiene una respuesta aquí:
Esta pregunta está más relacionada con Python que con Django. Quiero probar escribir una prueba para esta función que estoy usando para obtener un formulario Django dinámicamente con los campos que configuré.
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)
Quiero probar si la clase QuizForm devuelta se hereda de forms.Form.
Algo como:
self.assertTrue(QuizForm isinheritedfrom forms.Form) # I know this does not exist
¿Hay alguna manera de hacer esto?
Echa un vistazo al issubclass(subclass,baseclass)
. Debería ser exactamente lo que necesitas.
Todo lo que necesitas hacer es usar issubclass
:
self.assertTrue(issubclass(QuizForm, forms.Form))
Use issubclass (myclass, parentclass) .
En tu caso:
self.assertTrue( issubclass(QuizForm, forms.Form) )
Use la función incorporada issubclass
. p.ej
issubclass(QuizForm, forms.Form)
Devuelve un bool
para que pueda usarlo directamente en self.assertTrue()