Как утверждать, что класс имеет свойство 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"))

Выходы должны быть разными.

Я не знаю, полезен ли этот тест-кейс. Ваш код является источником истины, вам не нужно тестировать встроенные модули. Вы скорее захотите инстанцировать определенные классы и посмотреть, соответствует ли результат ожидаемому.

Вернуться на верх