My .py files in Robot-Framework allows me to introduce breakpoints but .robot file it doesn't allow. How do i introduce and toggle breakpoints in my .robot test files for debugging?
Nohow - you can't add a Pycharm breakpoint in a .robot file.
The reason is your test script is not a real python code. When a run is started, Pycharm runs the entry point of the robot module - which reads the file's text, parses it in its internal structures and "converts" to python code (in quotes, as it really doesn't convert anything, makes RF objects and constructs a flow b/n them).
The actual python code that is ran is in the robotframework package (and any other py packages & modules it imports). For both the framework and Pycharm the .robot file is just a text file - thus no breakpoints are effective.
You can add a breakpoint inside a py file - one of the framework's, or in a library of yours, and it will be honored.
Or, you can use the Debug library - once it hits the point where you've put the Debug keyword, it gives you an interactive shell with full context at the current point (e.g. you can CRUD variables, or run available keywords).
It is possible to add breakpoints to both .py and .robot files with Robot Framework Language Server.
There are plugins for both PyCharm and VS Code.
Related
There are two options for creating scripts not bound to object creation/updating or pre/post deployment - Script (Build) and Script (Not in build).
Script (Not in build) can be used, for example, for including into a Pre-Deployment or Post-Deployment script by :r directive. They will just be included into generated deployment script.
I tried to use Script (Build) just to see how it is used. First, it did not recognize PRINT instruction: build just fails on it. Second, if I just leave a comment in Script (Build), it just never included into generated deployment script.
I also notices that if to open a Script (Not in build) in VS editor, it shows a toolbar of Execute-Parse-Plan-Connect, while I cannot see or turn on this toolbar for a Script (Build).
The question is - what is the purpose of introducing Script (Build)? How can I harness and use it, why can I need it? At which step of build does it make sense?
If you display properties of the scripts you will see:
Script (Build) - Build Action = Build
Script (Not in build) - Build Action = None
So script not in build is just a helper file that you might want to include in a project but it wont be parsed nor compiled into dacpac.
Script Build is a regular file that is parsed and compiled into dacpac, it has the same meaning as table file or stored procedure file. One can use it if he doesn't like to go through Add Item menu or he just want to include multiple objects of different type in one file.
I'm new to ROBOT framework and must create library keyword using java and utilize the JAR files in RIDE editor. I have followed the below steps. But still have confusions in where to start up. Please help me to achieve this.
Steps:
1) Installed Python, wxPython, pybot, RIDE, selenium2library successfully and I'm able to work with RIDE using predefined keywords.
2) For creating own java library, Installed Eclipse Mars, Java, ROBOT IDE manually using the link https://github.com/NitorCreations/RobotFramework-EclipseIDE/wiki/Installation
The question here is,
Anything i'm missing to install?
How to proceed further with Robot Framework coding?
Note: I'm reading many materials in parts to proceed things. But that is confusing me what are the steps to be followed. Is there any single material that i can get having the sequences of steps that need to be followed for my requirements?
The below links I referred with,
https://github.com/NitorCreations/RobotFramework-EclipseIDE/wiki/Usage
Maven error "Failure to transfer..."
Create a Maven project in Eclipse complains "Could not resolve archetype"
http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#using-set-test-suite-global-variable-keywords
Let's start with the basics. RIDE is an editor for Robot Script files. Robot Script files are executed by the Robot Framework robot application. It is important to understand the difference between these two applications. One creates files and the other uses them.
Assuming for a moment here that you have some custom functionality in a Jar file that you would like to make available inside the Robot Script files test cases. If this is indeed the case then your focus should be on create Robot Test Libraries. In the documentation there are numerous java examples given for basing your own library on.
This means that you do not need Maven, unless you want to, to create your library. Also Eclipse IDE is not needed nor is RIDE. The library you create can be used by Robot Framework even when it's run from the command line. Feel free to use them for what they are good at: writing Robot Scripts efficiently and running Robot through menu options instead of command line windows.
When you are familiar with Eclipse and comfortable with it's features, then I can also recommend using the Eclipse Application RED which is a mature Eclipse add on for creating, running and debugging Robot scripts.
There are two ways of implementing a Java routine in Robot Framework and it depends a bit on how you run Robot Framework: Python or Jython. Running Python means that you need to run the Java in a separate JVM container and connect to it. The simplest way is via Command Line interaction. This may cause some security concerns. The second approach is to use the Remote Library approach. A good example of this is the Robot Framework Sikuli Library. An added bonus is that you can run Robot and your Java application on two separate machines/servers.
The Jython way has been discussed on StackOverflow before and I gladly refer to it. Please bear in mind that although the examples refer to RIDE, the Library org.company.Keywordlibrary works in all IDE's, provided robot framework is run using Jython.
In the Jython documentation it clearly explains how to setup an Eclipse based IDE with Jython. Do keep in mind that it's recommended to use the same interpreter in development and production. I.e. if you create your scripts in Jython, do run them in 'production' also using Jython. Otherwise you open yourself up to interpreter differences where functionality does not work or behaves differently then expected.
An alternative approach with Jython is the all-in-one Robot Framework Maven JAR plugin. Adding a custom Java Library in this setup is not too difficult. A nice short tutorial can be found on the blog of Valerio Bruno. If this is your preferred route for development, then you may want to read the RED howto on integrating the Robot Framework Maven jar.
Working on your custom functionality is likely going to be a independent project in Eclipse, but can be linked to an Robot project via the Class Path settings in red.xml if you use RED or the CLASS_PATH environment variable.
Done! I have installed RED and required add on using following below steps. It worked successfully with predefined keywords. Now I'm gonna create user defined keywords/libraries using the same editor. I don't know where to start up. Will it work creating just a java project? Should I need to include any additional libraries?
Steps followed to proceed with RED:
1. RED Version Conclusion: https://github.com/nokia/RED/blob/master/release.md
2. RED Installation Instructions: https://github.com/nokia/RED/blob/master/installation.md
3. ROBOT Framework prerequisites using RED: https://github.com/nokia/RED/blob/master/red_help/first_steps/download_install.html.md
4. To verify Installations in Eclipse: Help -> Installation Details to check if RED is visible on installed features list
5. Create Project and Tests using RED in Eclipse: https://github.com/nokia/RED/blob/master/red_help/first_steps/create_run.html.md
6. RED Steps: https://github.com/nokia/RED/blob/master/First_steps.md
7. Quick STart: https://github.com/nokia/RED/blob/master/red_help/user_guide/quick_start.html.md
I'm playing around with boxfuse attempting to "fuse" an image which contains an executable JAR. My executable JAR is given the path to a config file as an argument to it's main method, like so:
java -jar my-executable.jar -conf /some/path/to/my/conf.json
Where the file conf.json is read in by the JAR's process to be configured with e.g. port, database connection properties, etc.
I understand how to pass custom arguments using -jvm.main.args="-conf /some/path/to/my/conf.json", however, I don't know how to get the config file into the image itself. Obviously the path has to point to a valid file that exists within the image.
In dev, test and production, I would want to use the same executable JAR, but a different config file for each environment. I don't currently see a way around having different images for each environment. I see there is some support for packaging specific config with Dropwizard payloads, but no mention of something similar for executable JARs.
Is there a more general way I can package arbitrary files into the image, with predictable paths I can refer to in the jvm.main.args?
P.S. in my case the executable JAR happens to be a Vert.x application, but I think the general case applies.
What you can do is package the configuration for all environments (dev, test & production) within the executable JAR file. So you would have dev.json, test.json and production.json
You can then use a technique like environment detection with for example an environment variable to detect the correct environment at runtime and pick the correct configuration, which can then be loaded from the classpath instead of the file system.
This allows you to build both the jar file and the Boxfuse image only once and run it unchanged on all environments.
P.S.: I've just raised an issue for you to add first class Vert.x support in the near future to make things even easier: https://github.com/cloudcaptainsh/cloudcaptain/issues/28
I try to make automatic test on sikuli, I have to many TCs in sikuli files, but I need all the file on sikuli run one by one without human actions, a know I can do a batch or a sukili file who run all the files, but isn't a way to do like a main in a scrip in sikuli?
1) Sikuli can use Python modules syntax. I used it in my practice.
My old module was started like this:
# import
import sys
sys.path.append("/Program Files/Sikuli")
from sikuli.Sikuli import *
# some Sikuli functions further.
Then I imported my module like Python module in Sikuli/Python main routine and used it's functions. So you can put your TC in modules and call them from "Main" module.
2) There was some works on integrating Sikuli into Robot Framework, general purpose testing framework. You can Google them out.
Unfortunately, all that worked with Sikuli versions before 1.0 , and I just don't know how it is going now (there is one developer on Sikuli now and things don't go smooth). In general, the answer is "yes, you can" (other way or another), but I can't give clear full details now.
You could write a shell script with all the commands you would otherwise run manually.
Something like:
#!/bin/sh
sikuli-ide -r sikuli_script1
sikuli-ide -r sikuli_script2
sikuli-ide -r sikuli_script3
And so on. Afterwards just run the script.
I have a pre-build event in a web project in Visual Studio (2012 but same behaviour in 2010).
The prebuild invoke a simple exe which look for every filename.aspx.vb file if there is a matching filename.html in the folder.
If it does, it just read the filename.html as a string (escaped and minified) and inject it as a string also in the finename.aspx.vb something like :
myStribBuilder.Append("This is where the html code from the external file is going")
Let say i made a modification on filename.html I save and I compile and test the website. It should reflect the latest change when calling filename.aspx
Here what happens :
If I have a very light project with one page or two, it does work. It compiles fine as expected.
Then project get bigger and it doesn't work anymore. I mean code is injected but not compiled as expected, if I refresh filename.aspx on webserver I will still have same version but if I open filename.aspx.vb on VS the code is in there. Second compilation works 100% ok.
I can live with that but I have to compile TWICE each time for testing purpose after html files changes.
This doesn't make sense to me.
What "pre-build" means if in fact it seems to cache the code right on compilation request before executing the prebuild routine.
So, how can I be sure to inject code in my *.vb file before compilation begins ?
I figured out the problem was not VS not waiting for exe to complete on prebuild, but rather having the filename.aspx.vb opened when compiling.
The code update itself on the IDE (with options set to autoupdate externally modified opened page) but I guess the compile process keep the pre-build version of the opened file, which make sense in a way.
If I close the file before compiling it is ok.
Now I wonder if there is a workaround to this, but I understand it is not common practice to externally modify on the fly opened files in IDE before compilation. I do however rely heavily on this technique.