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

时间:2017-01-27 20:41:33

标签: django unit-testing wagtail

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

./manage.py dumpdata --natural-foreign --natural-primary  --indent 4 > test.json

并在测试用例中使用fixture:

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的vanilla安装运行的。我没有创建任何自定义模型或数据类型或进行任何修改,因此唯一的现有数据由站点和页面组成。

1 个答案:

答案 0 :(得分:0)

您的夹具(可能)是正确的 - 但是,Wagtail的测试环境配置为使用a custom user model,因此在具有标准用户模型的安装上创建的夹具不会兼容。

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

  • "model": "auth.user"更改为“"型号":" customuser.customuser"
  • 删除"date_joined"字段
  • 添加字段"country""attachment";这些可以设置为空字符串