使用Flask test_client()自动进行JSON解码

时间:2017-11-10 00:23:01

标签: python flask

使用内置test_client的Flask进行测试时,我发现无法自动解码JSON响应。

我用于测试登录过程的一些pytest代码是:

@pytest.mark.parametrize('user_info', [sign_in])
def test_sign_in_post(self, user_info, client):
    r = client.post(
        f'/{ApiConfig.name}/sign_in',
        data=json.dumps(user_info),
        content_type='application/json',
    )
    assert r.status_code == 200
    assert 'session_key' in json.loads(r.data.decode())

我要问的部分是json.loads(r.data.decode())代码段。有更好的方法吗?

例如,在requests模块中,代码为assert 'session_key' in r.json()

1 个答案:

答案 0 :(得分:2)

现在已发布Flask 1.0,响应对象具有json属性和get_json方法,就像request一样:

resp = client.get('/api/users/)
print(resp.json)

以前,您必须自己加载它:

from flask import json

rv = client.get('/api/users')
json.loads(rv.get_data(as_text=True))