【问题标题】:Robotframework: How to update JSON field valueRobotframework:如何更新 JSON 字段值
【发布时间】:2017-06-20 01:35:27
【问题描述】:

我正在使用机器人框架编写测试。我正在尝试更新 json 字段中的值,但我看到了一些奇怪的行为。

我执行 HTTP GET 并接收 json。我检查一下原来的值是什么,

Log To Console | ${JSON["Components"]["SubComponents"]}

返回

valueA

然后我尝试更新如下值。

${JSON["Components"]["SubComponents"]}= | Set Variable | valueB

如果我以这种方式记录输出

Log To Console | ${JSON["Components"]["SubComponents"]}

我明白了

valueB

但如果我这样检查

Log To Console | ${JSON["Components"]}

我明白了

{u'SubComponents': valueA, u'MoreComponents': whatever}

发生了什么,为什么不更新?

我需要更新 JSON 字段,以便进行 HTTP PATCH。 我试过关注Json handling in ROBOT 但它不起作用,我认为这与我的带有单引号的 JSON 文件有关。

仅供参考,我是 json 和机器人框架的新手

【问题讨论】:

  • Python 代码在哪里,你为什么要管道?您可以在 Python 中编辑 JSON 变量
  • 管道是机器人框架的工作方式。或者你可以使用两个空格。我在 python 中使用 Evaluate 对其进行编辑的所有尝试都失败了。我链接到的帖子尝试这样做,但它对我不起作用,我不知道如何修复它。
  • @cricket_007 - | 用作关键字分隔符,而不是我们通常知道的通用管道。可以使用管道或空间分隔符 - 偏好问题。
  • 我实际上找到了一个解决方案。如果我这样做Set To Dictionary | ${JSON["Components"]} | SubComponents=valueB,那么我会看到正确的行为。我仍然想知道上面发生了什么以及为什么我在一个情况下看到它但是不是另一个。这是我链接到的帖子中建议的解决方案的一部分,但由于问题我无法通过 json.load() 所以我从来没有尝试过。

标签: python json http robotframework


【解决方案1】:

您不能那样设置变量。你必须不断提醒自己机器人不是编程语言。您所做的是创建了一个变量,字面意思是${JSON["Components"]["SubComponents"]}。您没有更新原始的${JSON} 变量。

如果您使用关键字Log variables,您可以看到这一点。您会看到这个新关键字,其名称看起来像一本字典。

要更改字典的值,您需要使用关键字,例如 Set to dictionary

例如:

set to dictionary    ${JSON["Components"]}   Subcomponents=valueb

【讨论】:

  • 感谢您的解释!现在我意识到这一点是有道理的。机器人允许将变量命名为与字典中的条目相同的名称似乎有点奇怪。但我猜那是因为就像你说的它不是编程语言。 -- 你一定是在我发表评论的同时发布的
猜你喜欢
  • 2021-08-29
  • 1970-01-01
  • 2017-06-11
  • 1970-01-01
  • 2017-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-15
相关资源
最近更新 更多