Wagtail:如何为简单的页面编辑设置unittest



我正试图用django-pytestWagtail_factories在Wagtail中设置一个简单的测试,以测试用户编辑自己拥有的Pages的能力。但当我试图获得编辑网址时,我一直在重定向。(对于我在这里的例子,我使用超级用户固定装置来不必处理权限。(

# test_views.py
def test_user_can_edit_owned_pages(client, superuser):
parent_page = MyPageIndexPageFactory()
my_page = MyPageFactory(owner=superuser, parent=parent_page)
edit_url = reverse("register_mypage_modeladmin_edit", args=[my_page.pk])
client.force_login(superuser)
response = client.get(edit_url)

# to capture in pytests output  
print(
superuser.is_superuser, 
my_page.id, 
response
)    
assert response.status_code == 200

assert失败了,尽管捕获的输出显示Pageget是用url中的正确ID创建的,但我还是要重定向。

True 4778 <HttpResponseRedirect status_code=302, "text/html; charset=utf-8", url="/admin/pages/4778/edit/?next=/admin/my_app/mypage/">

当我得到我的模型的列表视图的索引url时,一切都很好。

[...]
index_url = reverse("register_mypage_modeladmin_index")
response = client.get(index_url)
qs = response.context[0]["object_list"]
print(qs)

捕获的输出:<PageQuerySet [<MyPage: Test Page>]>

我怀疑这(仍然(是一个权限问题,即使我使用的是superuser。如何在Wagtail中设置这样一个简单的测试?

您正在访问的URL路由(register_mypage_modeladmin_edit(是modeladmin模块的一部分,当您在页面模型上使用它时,它确实会重定向到标准页面编辑视图:

对于页面模型,系统会引导到Wagtail现有的添加和编辑视图,并将您返回到正确的列表页面,以获得无缝体验。

所以,您看到的是Modeladmin按照设计工作。也许您打算对标准页面编辑视图运行此测试?如果是,则您想要的URL路由为wagtailadmin_pages:edit

最新更新