Я пытаюсь проверить мой код 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)
Я думаю, что ожидаемый результат должен иметь двойные кавычки вместо одинарных кавычек в данных.
Проблема была с кодом набора тестов роботов, я изменил эту строку,
${json} = evaluate json.loads('''${result}''') json
в
${json} = evaluate json.loads(json.dumps(${result})) json
Теперь это подтверждает нормально.
json.loads('''{'extVirtualLinks': [{
вы вызываете json.loads для строкового литерала? (я имею в виду тройные кавычки.