У меня есть несколько тестов в моем проекте 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
)
Когда я запускаю тесты, тесты, которые вызывают эту функцию (внутри класса TestCase django), сохраняют экземпляры своих моделей в мою локальную базу данных разработки (как указано в моем файле локальных настроек), не strong> автоматически созданная временная тестовая БД.
Тесты выглядят примерно так:
TestFooThing(TestCase):
def test_foo_stuff(self):
foo_inst = foo_factory()
self.assertTrue(foo_inst.blah)
Насколько я понимаю, вся среда загружается с использованием настроек тестовой среды, но этот конкретный случай, похоже, не работает таким образом. Другие тесты прекрасно используют тестовую БД.
Что мне здесь не хватает?
Подробности:
Джанго 1.6
Запуск тестов с использованием django-nose