我正试图用django-pytest和Wagtail_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
失败了,尽管捕获的输出显示Page
get是用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
。