Robot Framework Integration

Robot Framework is an open-source test automation framework. The integration with Zephyr Enterprise works by sending a JUnit XML results file generated by the framework via API/vortex to Zephyr Enterprise.

For more info on the Robot framework, see here.

Writing Robot Framework tests

See below for an example of writing test cases with Robot Framework and Zephyr Enterprise.

*** Test Cases ***
# will match Zephyr Enterprise test case named Calculator.User can clear the display
User can clear the display
Input number 10
Press operator +
Input number 1
Press clear
Display should be empty

Note the comments above each method describing how they map to existing test cases within Zephyr Enterprise.

Configuring Robot Framework to output JUnit XML results file

No configuration is required beforehand. To instruct Robot Framework to generate the JUnit XML results file, all that is required is to execute the tests with -x parameter followed by the xml file name. Here is an example:

robot -x junitresult.xml mytest.robot

Uploading results to Zephyr Enterprise

Once the Robot Framework tests have been executed, the results can be uploaded to Zephyr Enterprise.

  • Using API we can upload the JUnit XML results file generated by Robot Framework.

  • Using Vortex Suite Automation containing JUnit XML results file generated by Robot Framework.

  • Using Vortex FolderWatcher file containing multiple JUnit XML results files generated by Robot Framework.

If the XML file Upload does not work, we could create a Custom template for the Robot Framework depending on the Junit XML output using the API.

Example Body of the Custom Template:-

Example 1:-

{
    "name": "robot",
    "jsonTemplate": "[{\"statuses\":[{\"statusId\":\"2\",\"attachmentText\":\"Name: ${robot.suite.test:name} \\nResult: ${robot.suite.test.status:status} \\nMessage: ${robot.suite.test.status}\",\"status\":\"${robot.suite.test.status:status}\",\"statusString\":\"FAIL\"},{\"statusId\":\"1\",\"attachmentText\":\"Classname: ${robot.suite:name} \\nTestcaseName: ${robot.suite.test:name} \\nResult: ${robot.suite.test.status:status}\",\"default\":true}],\"skipTestcaseNames\":\"\",\"packageName\":\"${robot.suite:name}\",\"testcase\":{\"name\":\"${robot.suite.test:name}\"},\"strict\":true}]"
}

Example 2:-

{
    "name": "robot1",
    "jsonTemplate": "[{\"statuses\":[{\"statusId\":\"2\",\"attachmentText\":\"Name: ${robot.suite.suite.test:name} \\nResult: ${robot.suite.suite.test.status:status} \\nMessage: ${robot.suite.suite.test.status}\",\"status\":\"${robot.suite.suite.test.status:status}\",\"statusString\":\"FAIL\"},{\"statusId\":\"1\",\"attachmentText\":\"Classname: ${robot.suite.suite:name} \\nTestcaseName: ${robot.suite.suite.test:name} \\nResult: ${robot.suite.suite.test.status:status}\",\"default\":true}],\"skipTestcaseNames\":\"\",\"packageName\":\"${robot.suite.suite:name}\",\"testcase\":{\"name\":\"${robot.suite.suite.test:name}\"},\"strict\":true}]"
}
Publication date: