Wagtail:如何为简单的页面编辑设置单元测试?
Wagtail: How to setup up unittest for simple page edit?
我正在尝试使用 django-pytest 和 wagtail_factories 在 Wagtail 中设置一个简单的测试来测试用户编辑 Pages
他们拥有的。但是当我尝试获取编辑 url 时,我一直在重定向。 (对于我这里的示例,我使用超级用户装置来不必处理权限。)
# 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
尽管捕获的输出显示 Page
get 是使用 url 中的正确 ID 创建的,但 assert
失败了——但我仍然在重定向。
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 模块的一部分,它确实 redirect to the standard page edit view when you use it on a page model:
For Page models, the system directs to Wagtail’s existing add and edit views, and returns you back to the correct list page, for a seamless experience.
因此,您看到的是 Modeladmin 按设计工作。也许您打算 运行 针对标准页面编辑视图进行此测试?如果是这样,您想要的 URL 路线是 wagtailadmin_pages:edit
.
我正在尝试使用 django-pytest 和 wagtail_factories 在 Wagtail 中设置一个简单的测试来测试用户编辑 Pages
他们拥有的。但是当我尝试获取编辑 url 时,我一直在重定向。 (对于我这里的示例,我使用超级用户装置来不必处理权限。)
# 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
尽管捕获的输出显示 Page
get 是使用 url 中的正确 ID 创建的,但 assert
失败了——但我仍然在重定向。
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 模块的一部分,它确实 redirect to the standard page edit view when you use it on a page model:
For Page models, the system directs to Wagtail’s existing add and edit views, and returns you back to the correct list page, for a seamless experience.
因此,您看到的是 Modeladmin 按设计工作。也许您打算 运行 针对标准页面编辑视图进行此测试?如果是这样,您想要的 URL 路线是 wagtailadmin_pages:edit
.