Flask 其他测试技巧

除了如上文演示的使用测试客户端完成测试的方法,也有一个
test_request_context() 方法可以
配合 with 语句用于激活一个临时的请求上下文。通过
它,您可以访问 requestg
session 类的对象,就像在视图中一样。
这里有一个完整的例子示范了这种用法:

app = flask.Flask(__name__)

with app.test_request_context('/?name=Peter'):
    assert flask.request.path == '/'
    assert flask.request.args['name'] == 'Peter'

所有其他的和上下文绑定的对象都可以使用同样的方法访问。

如果您希望测试应用在不同配置的情况下的表现,这里似乎没有一个
很好的方法,考虑使用应用的工厂函数(参考 应用程序的工厂函数)

注意,尽管你在使用一个测试用的请求环境,函数
before_request() 以及
after_request() 都不会自动运行。
然而,teardown_request() 函数在
测试请求的上下文离开 with 块的时候会执行。如果您
希望 before_request() 函数仍然执行。
您需要手动调用 preprocess_request() 方法:

app = flask.Flask(__name__)

with app.test_request_context('/?name=Peter'):
    app.preprocess_request()
    ...

这对于打开数据库连接或者其他类似的操作来说,很可能
是必须的,这视您应用的设计方式而定。

如果您希望调用 after_request() 函数,
您需要使用 process_response() 方法。
这个方法需要您传入一个 response 对象:

app = flask.Flask(__name__)

with app.test_request_context('/?name=Peter'):
    resp = Response('...')
    resp = app.process_response(resp)
    ...

这通常不是很有效,因为这时您可以直接转向使用
测试客户端。

作者:冒牌SEO,如若转载,请注明出处:https://www.web176.com/flask2/21735.html

(0)
打赏 支付宝 支付宝 微信 微信
冒牌SEO冒牌SEO
上一篇 2023年5月18日
下一篇 2023年5月18日

相关推荐

发表回复

登录后才能评论