如何使用Flask test_client设置请求参数?

Saš*_*aba 11 python testing unit-testing flask flask-testing

我必须测试一个从request.args获取某些信息的视图.

我无法模仿这个,因为视图中的很多东西都使用了请求对象.我能想到的唯一选择是手动设置request.args.

我可以用test_request_context()做到这一点,例如:

with self.app.test_request_context() as req:
    req.request.args = {'code': 'mocked access token'}
    MyView()
Run Code Online (Sandbox Code Playgroud)

现在,此视图中的请求将包含我已设置的参数.但是我需要调用我的视图,而不仅仅是初始化它,所以我使用它:

with self.app.test_client() as c:
    resp = c.get('/myview')
Run Code Online (Sandbox Code Playgroud)

但我不知道如何以这种方式操纵请求参数.

我试过这个:

with self.app.test_client() as c:
    with self.app.test_request_context() as req:
        req.request.args = {'code': 'mocked access token'}
        resp = c.get('/myview')
Run Code Online (Sandbox Code Playgroud)

但是这没有设置request.args.

dav*_*ism 18

query_string参数传递给c.get,可以是a dict,a MultiDict或已编码的字符串.

with app.test_client() as c:
    r = c.get('/', query_string={'name': 'davidism'})
Run Code Online (Sandbox Code Playgroud)

测试客户端的请求方法通过他们的论点WERKZEUG的EnvironBuilder,这也正是这个是记录.