Как написать assert на один из объектов в массиве json?

Пишу свои первые автотесты с помощью python3 и pytest. Есть некоторые сложности с написанием assert'ов, когда в ответе сервера в формате json есть массив объектов. Конкретно не получается верно указать параметр, по которому я сравниваю. Вот пример ответа:

{'users': [{'displayName': 'Тестер Тестеров',
            'familyName': 'Тестеров',
            'givenName': 'Тестер',
            'id': '48',
            'properties': [{'type': 'user_home',
                            'value': '0ce419ba-deb4-4b92-a573-c6809a581236'},
                           {'type': 'name', 'value': 'Tester'},
                           {'type': 'thumbnailUrl',
                            'value': '5223a9c9-b4b6-49cf-88e1-298183d577bf'},
                           {'type': 'displayName', 'value': 'Тестер Тестеров'},
                           {'type': 'birthdate',
                            'value': '1996-04-09T20:00:00.000Z'},
                           {'type': 'thumbnailUrl',
                            'value': '5223a9c9-b4b6-49cf-88e1-298183d577bf'},
                           {'type': 'user_home',
                            'value': '0ce419ba-deb4-4b92-a573-c6809a581236'}],
            'username': 'user_802ff83720d83f9626836f86dd9905e2'},
           {'displayName': 'Anonymous',
            'familyName': None,
            'givenName': 'Anonymous',
            'id': '148',
            'properties': [],
            'username': 'user_60a58d33a3effbcc1bc261e0c69688a1'},
           {'displayName': 'Anonymous',
            'familyName': None,
            'givenName': 'Anonymous',
            'id': '248',
            'properties': [],
            'username': 'user_9fb59ad75b801e0c4671b11db5f66010'}]}

И мне надо написать assert на один из объектов в "Properties". Подскажите пожалуйста, как можно это сделать? Перепробовал много вариантов. Вот один из примеров,что я пробовал : assert response_body['users'] == {'id': 148} . Выдает AssertionError.


Ответы (1 шт):

Автор решения: insolor

Если правильно понял ваше условие: код проверяет, что для хотя бы одного объекта из списка response_body['users'] выполняется условие user['id'] == '148'

assert any(user['id'] == '148' for user in response_body['users'])

Примерно соответствует такому коду:

for user in response_body['users']:
    if user['id'] == '148':
        assert True
        break
else:
    assert False
→ Ссылка