繁体   English   中英

如何使用 Python 断言 JSON 数组中的数据

[英]How to assert data in a JSON array with Python

我正在尝试自动化一些 API 端点,但 JSON 响应是一个数据数组。 我如何断言特定用户及其在 JSON 数组中的所有数据?

我正在尝试:

assert  {
            "user": "test1",
            "userName": "John Berner",
            "userid": "1"
        } in response.json()

JSON 响应是:

{
    "data": [
        {
            "user": "test1",
            "userName": "John Berner",
            "userid": "1"
        },
        {
            "user": "test2",
            "userName": "Nick Morris",
            "userid": "2"
        }
    ],
    "metadata": {
        "current_page": 1,
        "pages": 1,
        "per_page": 100,
        "total": 2
    }
}

请这样尝试:您可以使用循环遍历 any 中的data来执行此检查。

contents = json.loads(apiresponse_data)
assert any(i['user'] == 'test1' for i in contents['data'])

如果响应中的所有字段都是你的user_info的一部分,你可以做你想做的事 -

# response = json.loads(api_response_data)
response = {
    "data": [
        {
            "user": "test1",
            "userName": "John Berner",
            "userid": "1"
        },
        {
            "user": "test2",
            "userName": "Nick Morris",
            "userid": "2"
        }
    ],
    "metadata": {
        "current_page": 1,
        "pages": 1,
        "per_page": 100,
        "total": 2
    }
}

user_info = {
    "user": "test1",
    "userName": "John Berner",
    "userid": "1"
}

assert user_info in response['data']

上面没有引发AssertionError因为user_inforesponse['data']

如果您已经解码了 json 响应,您也可以使用以下内容 -

assert {
    "user": "test1",
    "userName": "John Berner",
    "userid": "1"
} in response['data']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM