#api #unit-testing #robotframework
Вопрос:
Привет всем, я хочу опубликовать приведенный ниже формат в качестве входных данных в ROBOT Framework.
{
"Description": "School",
"Details": [
{
"name": "Test1",
"Surname": "XYZ"
},
{
"name1": "Test2",
"Surname2": "ABC"
}
]
}
Но я получаю следующую ошибку
body={"Error":"module 'jsonschema._utils' has no attribute 'types_msg'"}
Ниже приведен мой код для того же
${tag_1} = create dictionary name="Test1" value"XYZ"
${tag_2} = create dictionary name="Test2" value"ABC"
${body} = create list Description="School" Details=[$tag_1,$tag_2]
${header}= create dictionary Authorization=%{TEMP_TOKEN} content-Type=application/json
${create_student}= post On Session ABCDE /input json=${body} headers=${header} expected_status=200
Комментарии:
1. Вам не нужны кавычки вокруг строк.
name=Test1
этого достаточно, и ваши цитаты могут вызвать проблемы позже.2. Что такое значение»XYZ»? он недопустим в качестве пары ключ/значение словаря и не соответствует вашему json
Ответ №1:
Мне кажется, что есть несколько проблем — в основном, вы пытаетесь сохранить json в массиве, а не в объекте, и вы не преобразуете его в JSON.
Также были двойные кавычки вокруг значений ключа и недопустимый ключ/значение для значения»XYX» и значения»ABC», которое также не соответствует вашему примеру, как и должно быть «Фамилия».
Ниже приведены некоторые примеры изменений:
# Name and Surname Objects - Updated to remove double quotes and match the provided json with "Surname" instead of "value"
${tag_1} Create Dictionary name=Test1 Surname=XYZ
${tag_2} Create Dictionary name=Test2 Surname=ABC
# Details List / Json Array
@{details} Create List ${tag_1} ${tag_2}
# Body - Fixed so it's an object not an array
amp;{body} Create Dictionary
... Description=School
... Details=${details}
# Convert the body to JSON
${body} Evaluate json.dumps(${body}) json
Выход:
{"Description": "School", "Details": [{"name": "Test1", "Surname": "XYZ"}, {"name": "Test2", "Surname": "ABC"}]}