Модульное тестирование метаклассов и внутренних классов в Python - PullRequest
3 голосов
/ 07 августа 2011

Я обычно тестирую на класс, и это не проблема. Однако после возни с Python я столкнулся с проблемой, с которой я не сталкивался ранее в других языках, мета классах и внутренних классах.

Скажем, у меня есть класс, который содержит внутренний класс, а также мета-класс, каков наилучший способ структурировать модульные тесты для этой ситуации?

Одним из способов может быть проверка всех трех в одном тестовом модуле, так как они так или иначе тесно связаны. Но это мне кажется неправильным. Но как бы мне самостоятельно протестировать метакласс, создать в тесте фиктивный класс, использующий указанный метакласс ??

Ваши мысли, пожалуйста, stackoverflow!

1 Ответ

3 голосов
/ 07 августа 2011

Вы тестируете класс, создавая его экземпляр. Упомянутый вами «фиктивный класс» будет экземпляром метакласса, так что именно так вы и должны его протестировать.

Когда речь идет о тестировании внутреннего класса / внешнего класса - да, я бы включил тестирование внутреннего класса в тест для внешнего класса. Если имеет смысл тестировать внутренний класс независимо от внешнего класса, почему он вообще является внутренним классом? Любой внутренний класс должен иметь смысл только в области действия внешнего класса. Если вы собираетесь протестировать его самостоятельно, вам все равно придется имитировать среду внешнего класса.

...