2017-02-02 52 views
0

我正在编写一个测试机器人框架。我试图更新json字段中的值,但我看到一些奇怪的行为。Robotframework:如何更新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文件有关。

FYI我是新来的JSON和robotframework

+0

哪里是Python代码,以及你为什么管道的东西呢?您可以在Python中编辑JSON变量 –

+1

管道是机器人框架的工作原理。或者您可以使用两个空格。我在Python中使用Evaluate编辑它所做的所有尝试都失败了..我链接的文章试图做到这一点,但它不适用于我,我无法弄清楚如何解决它。 – scarlso9

+1

@ cricket_007 - '|'用作关键字分隔符,而不是我们通常所知的通用管道。可以使用管道或空间分隔符 - 优先事项。 – Goralight

回答

4

您不能设置变量的方式。你必须不断提醒自己,机器人不是一种编程语言。你所做的是你已经创建了一个名为${JSON["Components"]["SubComponents"]}的变量。你是而不是更新原来​​的${JSON}变量。

如果您使用关键字Log variables,您可以看到此内容。你会看到这个新的关键字的名字看起来像一本字典。

要更改字典的价值,你将需要使用如Set to dictionary

例如这样的关键字:

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

感谢您的解释!现在我意识到这一点是有道理的。看起来有点奇怪,机器人会允许一个变量被命名为与字典中的条目相同......但是我猜测那是因为你说它不是一种编程语言。 - 我必须在发表评论的同时发布此信息 – scarlso9