我試圖移植我的項目以使用Django 1.7。除了1件事以外,一切都很好。測試文件夾內的模型。內部測試模型 - Django 1.7問題
Django 1.7新遷移在內部運行migrate命令。在syncdb運行之前。這意味着如果一個模型不包含在遷移中 - 它不會被填充到數據庫(也可用於測試數據庫)。這正是我現在正在經歷的。
我要做的就是:
在我/app/tests/models.py
我有假人模型:class TestBaseImage(BaseImage): pass
它所做的是從一個抽象BaseImage
模型繼承。
然後在測試中,我創建了虛擬模型的實例來測試它。
問題是,它不再工作。它不包含在遷移中(這很明顯,因爲我不想將我的測試模型保留在生產數據庫中)。運行我的測試會導致數據庫錯誤,說table does not exist
。這是有道理的,因爲它不包含在遷移中。
有什麼辦法可以使它與新的遷移系統一起工作嗎?我找不到解決這個問題的方法。
碼我用:
應用程序/測試/ models.py
from ..models import BaseImage
class TestBaseImage(BaseImage):
"""Dummy model just to test BaseImage abstract class"""
pass
應用程序/ models.py
class BaseImage(models.Model):
# ... fields ...
class Meta:
abstract = True
工廠:
class BaseImageFactory(factory.django.DjangoModelFactory):
"""Factory class for Vessel model"""
FACTORY_FOR = BaseImage
ABSTRACT_FACTORY = True
class PortImageFactory(BaseImageFactory):
FACTORY_FOR = PortImage
試驗例:
def get_model_field(model, field_name):
"""Returns field instance"""
return model._meta.get_field_by_name(field_name)[0]
def test_owner_field(self):
"""Tests owner field"""
field = get_model_field(BaseImage, "owner")
self.assertIsInstance(field, models.ForeignKey)
self.assertEqual(field.rel.to, get_user_model())
我在測試中創建了一個新模型並創建了它的實例,但我沒有收到任何錯誤。 – ChillarAnand 2014-09-04 15:43:46
@ChillarAnand我添加了一些代碼。你用Django 1.7和南方關閉了嗎?我仍然得到表不存在:/ – tunarob 2014-09-04 16:09:21
不應該是你的對象嘲笑,而不是像那樣定義? – aRkadeFR 2014-09-05 08:41:14