Django测试加载夹具auth.group

时间:2017-08-29 18:53:15

标签: django django-testing

当我运行django测试时,我收到错误:

  

IntegrityError:安装夹具时出现问题... ContentType匹配   查询不存在:(auth.group:pk = 2)field_value是   ' [u' add_corsmodel',u' corsheaders',u' corsmodel']'

我通过

来获得灯具

python manage.py dumpdata --natural-foreign --exclude=contenttypes --exclude=auth.Permission

我该如何解决这个问题?我应该排除其他一些表吗?

3 个答案:

答案 0 :(得分:0)

遇到同样的问题。不能用jango的标准方法来解决它。尝试使用django-fixture-magic app。

答案 1 :(得分:0)

我尝试做一件简单的事情来添加权限。 我创建了一个.json文件并输入了数据。

[
  {
    "model": "auth.group",
    "fields": {
      "name": "foo",
      "permissions": [
        29,45,46,47,48 //permission ID's created in auth.group
      ]
    }
  },
  {
    "model": "auth.group",
    "fields": {
      "name": "new_grp",
      "permissions": [
        29,45,46,47,48
      ]
    }
  }
]

这是我想要包含的初始权限,然后是

 manage.py loaddata <myJsonFIle>

我认为在您的情况下,它无法在表格中找到显示IntegrityError

的行或列的原因。

答案 2 :(得分:0)

从夹具中删除组可以解决您的问题 因为群组取决于PermissionContentType取决于"Tests are more readable and it’s more maintainable to create objects using the ORM.",这两个都从导出中删除。

从你对这个问题的评论来看,听起来你已经想到了这个问题。不过你的问题还有另一个答案:不要在Django中使用灯具来测试数据。 Django的文档建议您使用TestCase.setUpTestData方法设置测试数据。以下是文档中的动作:{{3}}