如何使用pytest测试Flask视图上下文和模板?
我将pytest与Flask一起使用,希望测试我的视图和模板,但我不清楚如何最好地做到这一点 我知道我可以测试HTML输出的内容,例如:如何使用pytest测试Flask视图上下文和模板?,flask,pytest,Flask,Pytest,我将pytest与Flask一起使用,希望测试我的视图和模板,但我不清楚如何最好地做到这一点 我知道我可以测试HTML输出的内容,例如: def test_my_视图(测试客户端): #test_client是一个表示app.test_client()的夹具 response=test\u client.get(“/myurl”) 在response.data中断言b“我的页面标题” 但有些事情我不确定该怎么做: 如何测试视图正在使用的模板 如何测试视图发送到模板的上下文?(例如,检查登录表单
def test_my_视图(测试客户端):
#test_client是一个表示app.test_client()的夹具
response=test\u client.get(“/myurl”)
在response.data中断言b“我的页面标题”
但有些事情我不确定该怎么做:
登录表单
是否是登录表单
的实例)action
属性的
标记,这是检查整个标记(例如
)是否存在的唯一方法,即使我不担心其他属性?假设页面上也有其他表单,我怎么能检查操作
我已经意识到1和2可以通过类似于中的解决方案来解决,稍微修改一下,以便与pytest一起使用 假设我们有一个烧瓶视图:
从flask导入渲染模板
从应用程序导入应用程序
@应用程序路径(“/my/view”)
定义我的视图():
返回渲染模板(“my/template.html”,greeting=“Hello!”)
我们想测试调用该URL是否使用了正确的模板,并且传递了正确的上下文数据
首先,创建一个可重复使用的夹具:
来自flask导入模板\u
导入pytest
@pytest.fixture
def捕获的_模板(应用程序):
记录=[]
def记录(发件人、模板、上下文,**额外):
记录。追加((模板,上下文))
模板\u呈现。连接(记录、应用)
尝试:
产量记录
最后:
已呈现模板。断开连接(记录、应用)
我还有一个test\u客户端
fixture,用于在测试中发出请求(类似于或)
然后写下你的测试:
def test_my_视图(测试客户端、捕获的模板):
response=test\u client.get(“/my/view”)
断言len(捕获的_模板)==1
模板,上下文=捕获的\u模板[0]
assert template.name=“my/template.html”
在上下文中断言“问候语”
断言上下文[“问候语”]=“你好!”
请注意,根据视图的功能,您可能在捕获的模板中有多个元素。这太棒了!正是我需要的!干得好,先生!