yanne / api-testing

I am using this to test GitHub API
1 stars 0 forks source link

"Set Test Variable" - RIDE incorrectly gives error message "Argument: name Unknown variable" #352

Open yanne opened 9 years ago

yanne commented 9 years ago

Originally submitted to Google Code by WillDe... on 2 Dec 2013

Version - RIDE 1.2.2 running on Python 2.7.6 Robot Version - Robot Framework 2.8.2

  1. Create a new test, test suite, etc
  2. Add 2 lines: Set Test Variable ${LoginUrl} http://google.com Open Browser ${LoginUrl}

Problem - both field are purple (indicating a bad value), and if you hover over them they say: "Argument: name Unknown variable" "Argument: url Unknown variable"

(See attached .png file for screenshot)

Thing is -

  1. This is completely valid syntax
  2. If you run it - it run just fine. RobotFramework runs this, despite RIDE saying there's an error.
yanne commented 9 years ago

Originally submitted to Google Code by @mkorpela on 3 Dec 2013

Thanks for the report!

Set Test/Suite/Global Variable are dynamically setting the variable. They could also be used inside of a keyword or even a library and also conditionally. Thus RIDE can not always know that a variable exists - but in your example case IMHO it should be identified in similar way as ${LoginURL}= Set Variable Value http://google.com

For the implementer of this feature @⁠see local namespace

yanne commented 9 years ago

Originally submitted to Google Code by @mkorpela on 9 Dec 2013

Unfortunately Set Test / Suite / Global Variable work in a very odd way compared to normal RF syntax..

Seems to require changes to localnamespace.py

Following should work after this:

Set Test Variable ${FOO} slkadlk Set Suite Variable \${bar} dl kslad Set Global Variable @⁠{zoo} kdsjak dksajdksj dsakjdksj

So lines after that (in the same keyword / test case) should identify FOO, bar and zoo as variables .. also they should be allowed to exist as arguments for Set Test / Suite / Global Variable. Also the implementation should correctly handle cases where these keywords have been overridden with something else.