У меня есть вариант использования, когда я получаю список электронных писем в виде поля, мне нужно проверить индивидуальный адрес электронной почты в списке в файле схемы 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.
Я получаю ошибку утверждения в качестве текущего вывода, если я добавляю .*
в начале и заканчиваю его работу.
Ожидаемый результат - это утверждение, подтвержденное только для отдельных идентификаторов электронной почты в списке.
Любой подход к решению этой проблемы приветствуется. Спасибо.