Python 为什么我的Django工厂函数在本地数据库中创建模型,而不是在测试数据库中创建模型?
我在Django项目中有一些测试,需要创建一些模型并将它们保存到DB中。我将创建实例的代码提取到一些“工厂”函数中,这些函数位于一个单独的模块(.py文件)中,帮助我快速创建相关模型集等(因此使用了Python 为什么我的Django工厂函数在本地数据库中创建模型,而不是在测试数据库中创建模型?,python,django,testing,factory,django-nose,Python,Django,Testing,Factory,Django Nose,我在Django项目中有一些测试,需要创建一些模型并将它们保存到DB中。我将创建实例的代码提取到一些“工厂”函数中,这些函数位于一个单独的模块(.py文件)中,帮助我快速创建相关模型集等(因此使用了object.create()stuff)。这些函数非常简单,如下所示: def foo_factory(): return Foo.objects.create( bar="random data" ) def bar_factory(foo_inst=foo_fac
object.create()
stuff)。这些函数非常简单,如下所示:
def foo_factory():
return Foo.objects.create(
bar="random data"
)
def bar_factory(foo_inst=foo_factory())
return Bar.objects.create(
related=foo_inst
)
TestFooThing(TestCase):
def test_foo_stuff(self):
foo_inst = foo_factory()
self.assertTrue(foo_inst.blah)
当我运行测试时,调用此功能的测试(在django的TestCase类中)将其模型实例保存到我的本地dev DB(在我的本地设置文件中指定),而不是自动创建的临时测试DB
测试如下所示:
def foo_factory():
return Foo.objects.create(
bar="random data"
)
def bar_factory(foo_inst=foo_factory())
return Bar.objects.create(
related=foo_inst
)
TestFooThing(TestCase):
def test_foo_stuff(self):
foo_inst = foo_factory()
self.assertTrue(foo_inst.blah)
我的理解是,整个环境是使用测试环境设置引导的,但是这个特定的案例似乎不是这样工作的。其他测试使用测试数据库就可以了
我错过了什么
详情:
- Django 1.6
- 使用django nose运行测试