【发布时间】:2014-06-13 21:21:11
【问题描述】:
我的 Django 项目中有一些测试需要创建一些模型并将它们保存到数据库中。我将创建实例的代码提取到一些“工厂”函数中,这些函数存在于单独的模块(.py 文件)中,帮助我快速创建相关模型集等(因此object.create() 的东西)。这些函数非常简单,看起来像这样:
def foo_factory():
return Foo.objects.create(
bar="random data"
)
def bar_factory(foo_inst=foo_factory())
return Bar.objects.create(
related=foo_inst
)
当我运行测试时,调用此功能的测试(在 django 的 TestCase 类中)将它们的模型实例保存到我的 本地开发数据库(在我的本地设置文件中指定),不是自动创建的临时测试数据库。
测试看起来像这样:
TestFooThing(TestCase):
def test_foo_stuff(self):
foo_inst = foo_factory()
self.assertTrue(foo_inst.blah)
我的理解是,整个环境是使用测试环境设置引导的,但这种特定情况似乎不是这样工作的。其他测试使用测试数据库就好了。
我在这里错过了什么?
详情:
Django 1.6
使用 django-nose 运行测试
【问题讨论】:
标签: python django testing factory django-nose