Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 生成用于摇摆单元测试的测试夹具的正确方法是什么?_Django_Unit Testing_Wagtail - Fatal编程技术网

Django 生成用于摇摆单元测试的测试夹具的正确方法是什么?

Django 生成用于摇摆单元测试的测试夹具的正确方法是什么?,django,unit-testing,wagtail,Django,Unit Testing,Wagtail,我正在尝试生成一个自定义页面树,用于在管理面板中测试用户查看权限。我使用以下命令将装置转储到文件中: ./manage.py dumpdata --natural-foreign --natural-primary --indent 4 > test.json 并在测试用例中使用夹具,如下所示: class MyTest(TestCase, WagtailTestUtils): fixtures = ['test.json'] def test_my_code(se

我正在尝试生成一个自定义页面树,用于在管理面板中测试用户查看权限。我使用以下命令将装置转储到文件中:

./manage.py dumpdata --natural-foreign --natural-primary  --indent 4 > test.json
并在测试用例中使用夹具,如下所示:

class MyTest(TestCase, WagtailTestUtils):

    fixtures = ['test.json']

    def test_my_code(self):
        # More code....
运行此测试将返回以下错误:

File "/Users/jchau/.pyenv/versions/2.7.8/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py", line 323, in execute
return Database.Cursor.execute(self, query, params)
DeserializationError: Problem installing fixture '/Users/jchau/Documents/wagtail/wagtail/tests/testapp/fixtures/test_group_restrictions.json': no such table: auth_user
看来我的测试数据格式不正确。是否有一种公认的方法来生成用于Wagtail的定制测试夹具

注意:这些命令是针对Wagtail 1.8的普通安装运行的。我没有创建任何自定义模型或数据类型,也没有进行任何修改,因此仅有的现有数据由站点和页面组成

您的夹具(可能)是正确的-但是,Wagtail的测试环境配置为使用,因此在安装时使用标准用户模型创建的夹具将不兼容

通过对两个模型的快速比较,应该可以手动编辑夹具中的“auth.user”记录,如下所示:

  • 将“模型”:“auth.user”更改为“模型”:“customuser.customuser”
  • 删除
    “加入日期”
    字段
  • 添加字段
    “国家”
    “附件”
    ;这些可以设置为空字符串

这似乎修复了auth_user表的错误,但现在wagtailcore_page.path的唯一约束出现问题。与其他车型有更多的区别吗?或者auth_user表是唯一的一个?我相信,自定义用户表是测试设置中唯一在数据库级别不标准的东西。不知道什么会导致页面路径失败-值得就此提出一个新问题。(如果您的fixture在页面记录上包含非唯一的“path”字段,那么创建它时出现了严重错误…)我发现它实际上与一个初始数据迁移冲突。此后,我在存储库中提出了一个问题,即在测试期间禁用迁移,或者删除初始页面/站点数据,以便我们可以从django
dumpdata
命令中使用自己的fixture