已解决:此处的示例不准确,也没有显示问题。解决方案在我下面给出的答案中。
如何从不同应用程序的单元测试模块导入工厂,并使用它在此测试模块中创建实例?
我有一个包含多个应用程序的 Django 项目。单元测试使用Factory Boy来创建用于测试的模型实例。(模型由South管理,并SOUTH_TESTS_MIGRATE = False
按照建议进行设置。)
在 appbar
的单元测试中,我想创建Foo
app 中定义的模型的测试实例foo
。
Appfoo
的单元测试模块已经有了 factory FooFactory
,也就是我要使用的 factory:
# 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
.