JSON-ответ от сервера-сваггера, полученный в одинарных кавычках, проверка фреймворка робота завершается с ошибкой json.loads

1

Я пытаюсь проверить мой код swagger-server через robot-framework. Обработчик сервера возвращает словарь (или объект json?). Робот-фреймворк пытается проверить ответ, но выдает эту ошибку.

ошибка: JSONDecodeError: Ожидается имя свойства, заключенное в двойные кавычки: строка 1, столбец 2 (символ 1)

Проблема в том, что ответ содержит одинарные кавычки вместо двойных (или ответ не идентифицирован как json), поэтому json.loads завершается ошибкой.

Я попытался добавить заголовки content-type и mimetype как 'application/json'. Пробовал колбу jsonify.

Вот часть кода, которая возвращает ответ.

def grants_post(project, GrantRequest, Accept=None, Content_Type=None, Authorization=None):
    # code that creates a large dictionary called rsp.

    grant_uri_id = str(uuid.uuid4())
    AsyncGrantResponses[grant_uri_id] = rsp
    print(rsp['output'])
    return rsp['output'], 201, {'location': "sol003/grant/" + project + "/grant/v1/grants/" + grant_uri_id , 'mimetype' : "application/json" }

Вот результаты робототехники. После проверки схемы это делает json.loads. Используется "......." в ч/б, так как данные большие.

Создать новый Грант - Синхронный режим
| FAIL | Оценка выражения json.loads('''{'extVirtualLinks': [{'vimConnectionId': 'vimAccount', 'extCps':........................... 'id': '718bb9a2-37dd-4238-a393-7936a8b53086'}''') не удалось: JSONDecodeError: Ожидается имя свойства, заключенное в двойные кавычки: строка 1, столбец 2 (символ 1)

Я думаю, что ожидаемый результат должен иметь двойные кавычки вместо одинарных кавычек в данных.

  • 0
    json.loads('''{'extVirtualLinks': [{ вы вызываете json.loads для строкового литерала? (я имею в виду тройные кавычки.
  • 0
    Тройные кавычки взяты из набора тестов робототехники.
Показать ещё 3 комментария
Теги:
http
swagger
robotframework

1 ответ

0

Проблема была с кодом набора тестов роботов, я изменил эту строку,

${json} = evaluate json.loads('''${result}''') json

в

${json} = evaluate json.loads(json.dumps(${result})) json

Теперь это подтверждает нормально.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню