已解決:此處的示例不準確,未顯示問題。解決方案在下面給出的答案中(我將在本站允許時標記正確)。工廠在調用另一工廠的定義時失敗
我怎麼能導入從不同的應用程序的單元測試模塊工廠,並用它這個測試模塊中創建實例?
我有一個Django項目與幾個應用程序。單元測試使用Factory Boy來創建用於測試的模型實例。 (模型是由South管理,並設置有SOUTH_TESTS_MIGRATE = False
的建議。)
在應用bar
的單元測試,我想創建的Foo
測試實例,在應用程序foo
定義的模型。
應用foo
的單元測試模塊已經有一個工廠FooFactory
,這是廠家我想用:
# foo/tests.py
import factory
…
from . import models
class FooFactory(factory.Factory):
FACTORY_FOR = models.Foo
spam = 0
…
所以在bar
,應用程序,我現在寫試驗,我需要FooFactory
。我嘗試導入並使用它:
# bar/tests.py
import factory
…
from . import models
from foo.tests import FooFactory
class BarFactory(factory.Factory):
FACTORY_FOR = models.Bar
foo = factory.SubFactory(FooFactory)
…
class BarTest(TestCase):
""" Test cases for ‘Bar’ model. """
def test_frobnicates_to_spanguloid(self):
""" The instance should frobnicate to a spanguloid. """
test_foo = FooFactory(code=34)
test_bar = BarFactory(foo=test_foo)
但測試用例失敗django.db.utils.DatabaseError: no such table: foo_foo
試圖創建的foo.Foo
一個實例。