Ваша переменная - это строка. Чтобы проверить это, просто попробуйте сделать словарь ключевых слов на нем (например, «получить из словаря» от Collections lib), и вы увидите, что он терпит неудачу
Выполнить этот код, чтобы увидеть его:.
*** Settings ***
Library Collections
*** Test Cases ***
Log Test
# let's test a proper dictionary
${dict} = create dictionary a b
${value} = get from dictionary ${dict} a
should be equal ${value} b
log to console ${\n}this was a real dictionary
# ${TC_ARGS} is passed on command line
# evaluate might let us thing we have a dict
${type_object} = Evaluate type(${TC_ARGS})
Log To Console the type object is ${type_object}
# but in fact this is a string and doing a dict operation will fail
get from dictionary ${type_object} a
Чтобы понять, почему вы получаете тип dict из оценки, вы должны понимать, что evaluate просто «оценивает данное выражение в Python и возвращает результаты». Поэтому он принимает свой аргумент как простую строку, запускает его с Python, как вы делали бы это на Python
Теперь, если вы проверите свой аргумент в командной строке Python, вот что вы получаете :
$ python
Python 2.7.9 (default, Dec 19 2014, 06:00:59)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> type({"a":"b"})
<type 'dict'>
Что совершенно нормально, потому что «строка» { «а»: «б»}, как вы объявляете словарь в Python.
Итак:
- быть осторожными с «оценивать»
- , если вам нужно передать словарь из командной строки Robot, вы будете передавать его в виде строки, а затем loads it with json Python library.
Я предполагаю, что интерпретатор python может анализировать аргументы и выводить их типы? – Ashalynd
Возможно, вы правы .. когда я передал '-v TC_ARGS: 'abc'', он выдает ошибку, говоря, что' переменная abc нигде не определена' ?. Итак, я думаю, эта проблема видна, когда мы «оцениваем» строку робота? Python 'evaluation' обрабатывает строку робота как переменные. –
Да, я думаю, вы правы. Попробуйте '-v TC_ARGS: '" abc "'', то это, вероятно, будет строка. – Ashalynd