我正试图通过robot-framework验证我的swagger服务器代码。服务器处理程序正在返回一个字典(或json对象?)。机器人框架试图验证响应,但给出了这个错误。
失败:JSONDecodeError:要求属性名用双引号括起来:第1行第2列(字符1)
问题是响应有单引号而不是双引号(或者响应没有被标识为json),因此json.loads失败。
我尝试将内容类型和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。使用了"……"在b/w中,因为数据很大。
创建新的Grant-Synchronous模式
|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
现在它验证良好。