我现在做的单元的测试已经存的代码。我面临的下一个问题:

运行之后syncdb为建立试验数据库、Django自动填补了几个表象django_content_type或auth_permissions.

然后,想象一下我需要运行一个复杂的测试,如检查的用户注册,这将需要一个论ot数据表格和它们之间的连接。

如果我尝试用我的整个现有的数据库,用于制作装置(这将是相当不方便,对我)-我会收到的错误喜欢 在这里,.发生这种情况的原因是,Django已经充满了表像django_content_type.

下一个可能的办法是使用django dumpdata--排除选项已经充满了syncdb表。但是,这不起作用也很好,因为如果我带用户与用户组对象从我的数据库和用户的权限表,这是自动建立通过syncdb,我可以接受的错误,因为主要钥匙,连接它们的是,现在指的错误。这是更好的描述 在这里, 在部分'固地狱,但解决方案显示有doensn看起来不好)

下一个可能的方案,我看到下一步:

  1. 我跑我的测试;Django创建测试数据库,使syncdb和创造所有这些表。
  2. 在我的测试设置的我丢这个数据库,创造新的空白数据库。
  3. 负载数据从现有数据库也在测试装置
有帮助吗?

解决方案

这是如何的问题是解决:

后syncdb创造了测试数据库,在安装的一部分测试我的使用 os.system 访问壳从我的代码。然后我只是装卸的数据库,该数据库我要用于试验。

所以这个的工作原理是这样的:syncdb填补contenttype和其他一些表格数据。然后在安装的一部分测试载sql倾倒清除所有以前创建的数据和我得到一个不错的数据库。

可能不是最好的解决方案,但它的工作原理=)

其他提示

我的做法将是第一次使用南使DB迁移容易(不帮助在所有,但是不错的),然后使用的一个模块的模型建立的方法。

当你在跑

  $  manage.py test my_proj

Django与南安装与创建测试数据库,并运行所有移徙给你一个全新的试验数据库。

编写测试,第一次创建一个python模块calle,test_model_factory.py 在这里建立的功能,创造你的目的。

def mk_user():
   User.objects.create(...)

然后在你的测试你可以导入你的test_model_factory模块,并创建对象对每一个测试。

  def test_something(self):
     test_user = test_model_factory.mk_user()

     self.assert(test_user ...)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top