生成用于 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"
;这些可以设置为空字符串
我正在尝试生成自定义页面树以测试管理面板中的用户查看权限。我正在使用以下命令将夹具转储到文件中:
./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"
;这些可以设置为空字符串