Testing your Wagtail site¶
Wagtail comes with some utilities that simplify writing tests for your site.
WagtailPageTests¶
-
class
wagtail.tests.utils.
WagtailPageTests
¶ WagtailPageTests
extendsdjango.test.TestCase
, adding a few newassert
methods. You should extend this class to make use of its methods:from wagtail.tests.utils import WagtailPageTests from myapp.models import MyPage class MyPageTests(WagtailPageTests): def test_can_create_a_page(self): ...
-
assertCanCreateAt
(parent_model, child_model, msg=None)¶ Assert a particular child Page type can be created under a parent Page type.
parent_model
andchild_model
should be the Page classes being tested.def test_can_create_under_home_page(self): # You can create a ContentPage under a HomePage self.assertCanCreateAt(HomePage, ContentPage)
-
assertCanNotCreateAt
(parent_model, child_model, msg=None)¶ Assert a particular child Page type can not be created under a parent Page type.
parent_model
andchild_model
should be the Page classes being tested.def test_cant_create_under_event_page(self): # You can not create a ContentPage under an EventPage self.assertCanNotCreateAt(EventPage, ContentPage)
-
assertCanCreate
(parent, child_model, data, msg=None)¶ Assert that a child of the given Page type can be created under the parent, using the supplied POST data.
parent
should be a Page instance, andchild_model
should be a Page subclass.data
should be a dict that will be POSTed at the Wagtail admin Page creation method.def test_can_create_content_page(self): # Get the HomePage root_page = HomePage.objects.get(pk=2) # Assert that a ContentPage can be made here, with this POST data self.assertCanCreate(root_page, ContentPage, { 'title': 'About us', 'body': 'Lorem ipsum dolor sit amet')
-
assertAllowedParentPageTypes
(child_model, parent_models, msg=None)¶ Test that the only page types that
child_model
can be created under areparent_models
.The list of allowed parent models may differ from those set in
Page.parent_page_types
, if the parent models have setPage.subpage_types
.def test_content_page_parent_pages(self): # A ContentPage can only be created under a HomePage # or another ContentPage self.assertAllowedParentPageTypes( ContentPage, {HomePage, ContentPage}) # An EventPage can only be created under an EventIndex self.assertAllowedParentPageTypes( EventPage, {EventIndex})
-
assertAllowedSubpageTypes
(parent_model, child_models, msg=None)¶ Test that the only page types that can be created under
parent_model
arechild_models
.The list of allowed child models may differ from those set in
Page.subpage_types
, if the child models have setPage.parent_page_types
.def test_content_page_subpages(self): # A ContentPage can only have other ContentPage children self.assertAllowedSubpageTypes( ContentPage, {ContentPage}) # A HomePage can have ContentPage and EventIndex children self.assertAllowedParentPageTypes( HomePage, {ContentPage, EventIndex})
-