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

时间:2016-08-03 15:26:19

标签: python unit-testing 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()

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

with self.app.test_client() as c:
    resp = c.get('/myview')

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

我试过这个:

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')

但这不会设置request.args。

1 个答案:

答案 0 :(得分:13)

query_string参数传递给c.get,该dict可以是MultiDictwith app.test_client() as c: r = c.get('/', query_string={'name': 'davidism'}) 或已编码的字符串。

Access to path denied

test client request methods将他们的论点传递给Werkzeug的EnvironBuilder,这是记录在案的地方。