gpt4 book ai didi

python - 用 DispatcherMiddleware 包裹的 Flask 应用不再有 test_client

转载 作者:太空狗 更新时间:2023-10-29 22:21:38 28 4
gpt4 key购买 nike

我们可以通过以下方式获取示例应用程序的test_client:

class MyTestCase(unittest.TestCase):
@classmethod
def setUpClass(cls):
my_app.app.config['TESTING'] = True
cls.client = my_app.app.test_client()

但是,如果我们用 DispatcherMiddleware 包装应用程序——我们会得到类似这样的错误 AttributeError: 'DispatcherMiddleware' 对象没有属性 'test_client'

有没有办法测试 Flask 应用程序的组成?

我们希望能够做这样的事情:

cls.client = my_app.all_apps.test_client()

all_apps 是像这样的中间件时:

all_apps = DispatcherMiddleware(my_app, {
'/backend': backend_app,
})

最佳答案

要将 WSGI 中间件添加到 Flask 应用程序,包装并替换应用程序的 wsgi_app 属性。您正在用对其他一些 WSGI 应用程序的引用替换对 Flask 应用程序的引用,这显然不会具有相同的属性。通过替换 wsgi_app,您保留了对 Flask 应用程序的引用,但更改了支持它的 WSGI 可调用对象。

app.wsgi_app = DispatcherMiddleware(app.wsgi_app, {
'/backend': backend_app.wsgi_app,
})

关于python - 用 DispatcherMiddleware 包裹的 Flask 应用不再有 test_client,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36219842/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com