python - 来自 swagger-server 的 JSON 响应在单引号中收到,机器人框架验证失败,因为 json.loads 失败

标签 python json http swagger robotframework

我正在尝试通过机器人框架验证我的 swagger-server 代码。服务器处理程序正在返回一个字典(或 json 对象?)。机器人框架尝试验证响应,但出现此错误。

失败:JSONDecodeError:需要用双引号引起来的属性名称:第 1 行第 2 列(字符 1)

问题是响应有单引号而不是双引号(或者响应没有被识别为 json)所以 json.loads 失败。

我尝试将内容类型和 mimetype header 添加为“application/json”。试过 flask 的 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。由于数据很大,所以在黑白中使用了“.......”。

Create a new Grant - Synchronous mode
| FAIL | Evaluating expression json.loads('''{'extVirtualLinks': [{'vimConnectionId': 'vimAccount', 'extCps':........................... 'id': '718bb9a2-37dd-4238-a393-7936a8b53086'}''') failed: JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

我认为预期的输出应该在数据中使用双引号而不是单引号。

最佳答案

问题出在机器人测试套件代码上,我更改了这一行,

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

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

现在它验证正常。

关于python - 来自 swagger-server 的 JSON 响应在单引号中收到,机器人框架验证失败,因为 json.loads 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54128628/

相关文章:

python - 其输出不按字典顺序排列的笛卡尔积

Python:从网站获取智能手机的价格

Angular 5 HttpClient HttpTestingController 测试报错路径

python - 使用 Boost/Python 的 undefined symbol

python - django-cms 的核心翻译不使用用户的语言

python - 使用 Werkzeug 的 Django 交互式回溯, `manage.py runserver_plus` 错误

c# - 字典 JSON 格式

android - 将 JSON 改造为 POJO

json - 使用 json.RawMessage 解码嵌套 json 字符串

http - 如何在 DataZen 中使用 header 认证?