Как проверить регулярное выражение элементов в массиве для схемы json - PullRequest
0 голосов
/ 07 мая 2020

У меня есть вариант использования, когда я получаю список электронных писем в виде поля, мне нужно проверить индивидуальный адрес электронной почты в списке в файле схемы JSON. Я попытался реализовать следующий фрагмент сниппета, но он не работает. вывод состоит в том, что мы хотим, чтобы каждый идентификатор электронной почты в списке был проверен по шаблону.

def validate_email_list(response: list) -> bool:
    """
    Validate the email list JSON received
    Reference: http://json-schema.org/understanding-json-schema/
    :param response: response received 
    :return validated: returns True if valid response else False
    """
    validated = True
    with open("../email_list.json", "r") as schema_reader:
        schema = json.loads(schema_reader.read())
    errors = Draft7Validator(schema).iter_errors(response)
    final_res = []
    for error in errors:
        LOGGER.error(error.message)
        validated = False
    if not validated:
        # In case of any validation error, obfuscate the email address and
        # print the response.
        for user_detail in response:
            try:
                user_detail.pop("emails")
            except KeyError as error:
                LOGGER.error(f"KeyError: {error} not found in the core response")
            final_res.append(user_detail)
        LOGGER.error(f"The response received from core (PI removed): {final_res}")
    return validated

Тестовые примеры для него следующие:

def test_validate_email_list_happy():
    """Test the validation functionality of the email list JSON
    """
    correct_input_res_01 = [
        {
            "emails": [
                "foo@india.com", "Bar@in.india.com"
            ]
        },
        {
            "emails": [
                "\t bar@in.or.com "
            ]
        }
    ]
    correct_input_res_02 = [
        {
            "emails": [
                "foo@in.ibm.com"
            ]
        }
    ]
    assert validate_email_list(correct_input_res_01)
    assert validate_email_list(correct_input_res_02)

Это python функция, используемая для проверки данных на соответствие JSON.

Я получаю ошибку утверждения в качестве текущего вывода, если я добавляю .* в начале и заканчиваю его работу.

Ожидаемый результат - это утверждение, подтвержденное только для отдельных идентификаторов электронной почты в списке.

Любой подход к решению этой проблемы приветствуется. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...