Как утверждать, что класс имеет свойство class exclusive в Django/Python?
У меня есть две модели в Django, одна из которых является базовой, а другая - наследуемой. Базовая модель имеет поле базы данных (которое в Python является атрибутом класса), а наследуемая модель имеет свойство, которое является эксклюзивным для класса (не для каждого созданного экземпляра). Оба варианта могут давать разные результаты.
from django.db import models
from django.utils.decorators import classproperty
class Parent(models.Model):
somefield = models.TextField()
class Child(Parent):
@classproperty
def somefield(cls):
return 'something'
Как я могу создать тест, чтобы убедиться, что все дочерние модели, созданные из родительской модели, имеют эксклюзивное свойство этого класса? Потому что если я использую hasattr(), он будет учитывать поле и свойство. Что-то вроде этого
assertTrue(hasattr(Child, 'somefield'))
assertFalse(hasattr(Parent, 'somefield'))
Вы можете сделать утверждения типа на атрибуте вашего класса следующим образом:
type(getattr(Child, "somefield"))
type(getattr(Parent, "somefield"))
Выходы должны быть разными.
Я не знаю, полезен ли этот тест-кейс. Ваш код является источником истины, вам не нужно тестировать встроенные модули. Вы скорее захотите инстанцировать определенные классы и посмотреть, соответствует ли результат ожидаемому.