где FACTORY_FOR на фабрике фабричного мальчика джанго?

Я использую 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 там нет. Итак, я думаю, что метакласс где-то это скрывает. В идеале я хотел бы свести к минимуму необходимость импортировать модель напрямую, если я использую фабрику.


person carlosayam    schedule 29.01.2013    source источник


Ответы (1)


SomeModelFactory._associated_class должно быть то, что вы ищете...

person Bernhard Vallant    schedule 29.01.2013
comment
Спасибо. Похоже, что-то официально недоступное. Это часть API или просто черный ход? Если это неофициально, я буду держать модель импорта в ожидании общедоступного API для этого. - person carlosayam; 30.01.2013