Запрос на публикацию в тестировании API с использованием платформы РОБОТОВ

#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"}]}