Today, I was faced with creating an extension keyword to
SwingLibrary, and I wanted (of course) to also make a Robot test case testing that new keyword. With non-trivial applications, Swing tests always require quite a bit of setup, many keywords have to be used before the interesting component is available.
Using Robot Framework to get the setup "right" is quite slow, since the turnaround time (= time to execute the test) is quite long, at least some tens of seconds. There is a somewhat faster method of using the SwingLibrary directly from an interactive Jython session. So I fired up Jython with the dependencies in the CLASSPATH:
CLASSPATH=bin:lib/swinglibrary-1.1.3-jar-with-dependencies.jar jython
And did some exploration:
import SwingLibrary
lib = SwingLibrary()
lib.runKeyword('startApplication', ['com.acme.MyFancyApp'])
lib.runKeyword('selectWindow', ['myMainWindow'])
lib.runKeyword('listComponentsInContext', [])
...
There are a couple things worth noting here:
- It is easiest to use the SwingLibrary keywords using the
runKeyword
-method, since the actual keywords are not methods of the SwingLibrary class.
- When using
runKeyword
, the arguments are always given in a list and the list has to supplied, even when it is empty.
When the desired workflow is achieved the keywords can be written down in a test case.