On this page
Testing your Wagtail site
Wagtail comes with some utilities that simplify writing tests for your site.
WagtailPageTests
Form data helpers
The assertCanCreate
method requires page data to be passed in the same format that the page edit form would submit. For complex page types, it can be difficult to construct this data structure by hand; the wagtail.tests.utils.form_data
module provides a set of helper functions to assist with this.
Fixtures
Using dumpdata
Creating fixtures for tests is best done by creating content in a development environment, and using Django’s dumpdata command.
Note that by default dumpdata
will represent content_type
by the primary key; this may cause consistency issues when adding / removing models, as content types are populated separately from fixtures. To prevent this, use the --natural-foreign
switch, which represents content types by ["app", "model"]
instead.
Manual modification
You could modify the dumped fixtures manually, or even write them all by hand. Here are a few things to be wary of.
Custom Page models
When creating customised Page models in fixtures, you will need to add both a wagtailcore.page
entry, and one for your custom Page model.
Let’s say you have a website
module which defines a Homepage(Page)
class. You could create such a homepage in a fixture with:
[
{
"model": "wagtailcore.page",
"pk": 3,
"fields": {
"title": "My Customer's Homepage",
"content_type": ["website", "homepage"],
"depth": 2
}
},
{
"model": "website.homepage",
"pk": 3,
"fields": {}
}
]
Treebeard fields
Filling in the path
/ numchild
/ depth
fields is necessary in order for tree operations like get_parent()
to work correctly. url_path
is another field that can cause errors in some uncommon cases if it isn’t filled in.
The Treebeard docs might help in understanding how this works.
Page contents
© 2014-present Torchbox Ltd and individual contributors.
All rights are reserved.
Licensed under the BSD License.
https://docs.wagtail.org/en/v2.16.3/advanced_topics/testing.html