【问题标题】:Testing pages with streamfields in Wagtail在 Wagtail 中使用流场测试页面
【发布时间】:2021-04-16 18:25:20
【问题描述】:
我正在通过get_context 在 StreamField 的富文本元素中解析 HTML,并希望能够测试我所做的上下文是否包含相关修改。但我真的很难创建一个具有填充 StreamField 的模拟/存根。
我正在查看https://docs.wagtail.io/en/stable/advanced_topics/testing.html,但需要做的不仅仅是测试创建是否成功以及rich_text 函数等似乎没有以正确的格式输出其他问题(例如附加到@987654324 @ 属性);我在通过dumpdata 制作固定装置方面取得了一些成功,但它们破坏了其他测试(可能是由于使数据库不一致或其他原因)
有没有什么好的示例可以预先填充 StreamField 的测试?
【问题讨论】:
标签:
testing
wagtail
wagtail-streamfield
【解决方案1】:
...事实证明它非常简单,一旦被指出来!
获得页面后(pagetype 是模块名称,PageName 是类名称)
from modules.pagetype.models import PageName
page = PageName()
将一些 JSON 添加到 StreamField 对象(这里称为 body)
import json
page.body = json.dumps(
[
{"type": "rich_text", "value": "<h2>Hello, World!</h2>"},
{"type": "rich_text", "value": "<h4>Here's another field</h4>"}
]
)
然后您可能想要发布帖子并查看输出。
from django.test import Client
page.save_revision().publish()
rv = Client().get(page.url)
assert "something_about_my_output_html" in str(rv.rendered_content)