断言 JSON 响应

Geo*_* G. 2 python json assert response

我有一个 python API 调用,服务器响应作为 JSON 输出传给我。

例如,我如何断言此输出中的“状态”为 0:

def test_case_connection():
    req = requests.get_simple(url=Server.MY_SERVER, params=my_vars)
    assert req["status"]="0"
Run Code Online (Sandbox Code Playgroud)

是我试过的。

响应看起来像:

{"status" : 0, ......}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

TypeError: 'Response' object has no attribute '__getitem__'
Run Code Online (Sandbox Code Playgroud)

Rai*_*ide 5

如果您只需要检查请求是否成功,使用即可request.status_code

def test_case_connection():
    req = requests.get_simple(url=Server.MY_SERVER, params=my_vars)
    assert req.status_code == 200
Run Code Online (Sandbox Code Playgroud)

如果您想检查响应中是否存在特定的键值对,则需要将响应负载从 json 转换为 dict:

import json

def test_case_connection():
    req = requests.get_simple(url=Server.MY_SERVER, params=my_vars)
    data = json.loads(req.content)
    assert data["status"] == "0"
Run Code Online (Sandbox Code Playgroud)

如果您使用的是 Requests 库,则可以避免使用其内置的 json 解码器手动转换 json 。