How can I set the value of a dictionary element to the result of a keyword in Robot Framework?

robotframework

Solution

As you probably have figured out, you can't assign to a dictionary from a keyword. You need to very specifically follow the dictionary syntax. you can only return variables to lists or scalars.

Robot framework isn't a fully fledged programming language, and it shouldn't be. By using an intermediate scalar, non-technical testers should be better able to understand what it is doing.

I added this since a google search for "robot framework dictionary" has this question high up in the list. Just create dictionaries with:

Create dictionary | ${my_dict} | a | b

Add to dictionaries with:

set to dictionary | ${my_dict} | c | d

And retrieve from dictionaries with:

${my_dict["a"]}

Or, if you need to not fail:

${my_dict.get('non-key','default value')}

Problem

I know that I can access a single element from a dictionary object with this format ${dict['KEY']}. Like this: ``` | | Log | ${dict['KEY']} | ``` And I can set a regular old scalar like this: ``` | | ${scalar}= | RFKeyword | "Yowp" ``` But if I try to set a dictionary element like this ``` | | ${dict['KEY']}= | RFKeyword | "Yowp" ``` I get "RFKeyword", "Yowp" in the variable, rather than the result of what RFKeyword produces when processing "Yowp" like I do with this ``` | | ${scalar}= | RFKeyword | "Yowp" ``` Assistance please

Original source