使用内置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()
答案 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))