小原さん
Do Something If 的なキーワードの If の後に変数の入った評価式 ( ${FOO}>42 とか ${BAR} == ...とか)を入れた場合、次のようなことが起こります。
・変数の部分が、Robot Framework のリテラルでそのまま置き換わります。例えば、
*** variables
${FOO} ASDF
${BAR} 123
のようにしていると、それぞれ ASDF>42 や 123 == .... になります。
・次に、この式を、 Python の式として、Pythonの eval() で評価します。
Pythonでは、文字列リテラルはクオートで囲い、数値リテラルはクオートがなくそのままです。
クオートがなければ、文字列は何かの名前(変数)を表していることになります。
例えば 「 ASDF>42 」なんかは、そもそも ASDF という変数がないのにいきなり ASDF>42 を評価しているのでエラーになります。
その結果、例えば
${FOO} == ASDF → ASDF == ASDF ...ASDF(左右両辺)は定義されていないので NameError
'${FOO}' == ASDF → 'ASDF' == ASDF ...ASDF(左辺)は定義されていないので NameError
${FOO} == 'ASDF' → ASDF == 'ASDF' ...ASDF(右辺)は定義されていないので NameError
'${FOO}' == 'ASDF' → 'ASDF' == 'ASDF' ...True
のようになります。
このことを念頭においておけば、ある程度区別がつくんじゃないでしょうか。