Я использую Factory Boy в проекте Django, и мне нужно получить доступ к свойствам класса, определенным в классе, в соответствующей фабрике.
В моем тестовом примере есть что-то вроде:
from django.test.testcases import TransactionTestCase
from app.tests.factories import SomeModelFactory
class MyTestCase(TransactionTestCase):
def test_something(self):
...
SomeModelFactory.create(
data_type=SomeModelFactory.FACTORY_FOR.TYPE_STRING)
...
В моем классе, как вы можете догадаться, соответствующая константа находится в нужном месте.
class SomeModel(models.Model):
TYPE_STRING = 2
...
и соответствующая фабрика определяется так, как должно быть
class SomeModelFactory(factory.Factory):
FACTORY_FOR = SomeModel
...
Тестовый пример не работает, говоря, что FACTORY_FOR
там нет. Итак, я думаю, что метакласс где-то это скрывает. В идеале я хотел бы свести к минимуму необходимость импортировать модель напрямую, если я использую фабрику.