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

What is the correct way of generating test fixtures for use in Wagtail unit tests?

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

./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....

运行本次测试returns出现以下错误:

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 的测试环境被配置为使用 a custom user model,因此在安装时使用标准用户模型创建的夹具将不兼容。

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

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