【发布时间】:2020-11-06 01:35:58
【问题描述】:
我正在尝试使用 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 是在 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 中设置这样的简单测试?
【问题讨论】: