SlideShare a Scribd company logo
1 of 17
Created by Jan Medved
www.opendaylight.org
Getting Started with
Robot Framework
Carol Sanders, Brocade
Created by Jan Medved
www.opendaylight.org
 Robot Framework is a Keyword Driven automation framework using Python or Java as
it's backend.
 Test cases are automated by writing steps using Robot framework keywords.
 Provides a simple library API for creating customized test libraries.
 Provides a command line interface and XML based outputs for integration into existing
build infrastructure (continuous integration systems).
 Report files are created as a result of every pybot execution: report.html, log.html,
output.xml.
 Implemented with Python
– Runs also on Jython (JVM) and IronPython (.NET)
– Can be extended natively using Python or Java
– Other languages supported via a remote interface
 Open source
– Apache 2.0 license
– Active development and growing community
What is Robot Framework
2
Created by Jan Medved
www.opendaylight.org
Test Suite Organization
3
Created by Jan Medved
www.opendaylight.org
Integration CSIT Organization
4
git clone https://git.opendaylight.org/gerrit/integration cd- ./integration/test/
Two directories
CSIT – contains the test suites, resource files containing keyword definitions particular to your
project tests, and testplans which are all needed to successfully run your test suite.
Tools – test scripts specifically written that test features
CSIT Directories (you will always put your files here)
Libraries
Suites
Testplans
Variables
Created by Jan Medved
www.opendaylight.org
Viewing Test Suites in Robot Framework Ride
5
Created by Jan Medved
www.opendaylight.org
Collections of test cases are called test suites. Test suites are made of files and directories.
1. Now that you have cloned the integration repository, you have the integration test infrastructure needed to begin
creating your test suite.
2. Open ride on the command line – ride.py&
3. Open directory to Integration test suites directory -- ./integration/tests/csit/suites
4. Create a new directory. This where your test suite and associated files will be located. Use the name of your
project as the directory name.
5. Create a new test suite within the directory just created.
6. Include all elements described in Test Suite Contents: Settings, Keywords, Resource file(s), Variables,
Documentation, Tags, Log, Setup, Teardown
7. Follow best practices when writing test cases
Creating Robot Framework Tests Suites
6
Created by Jan Medved
www.opendaylight.org
Integration Sample Test Suite
7
Created by Jan Medved
www.opendaylight.org
Sample Test Case Format
8
*** Settings ***
Documentation Test suite for RESTCONF inventory
Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH}
headers=${HEADERS_XML}
Suite Teardown Delete All Sessions
Library Collections
Library ../../../libraries/RequestsLibrary.py
Library ../../../libraries/Common.py
Variables ../../../variables/Variables.py
Resource ../../../libraries/Utils.txt
*** Variables ***
${REST_CONTEXT} /restconf/operational/opendaylight-inventory:nodes
@{node_list} openflow:1 openflow:2 openflow:3
*** Test Cases ***
Get list of nodes
[Documentation] Get the inventory
[Tags] restconf
Log ${start}
Wait Until Keyword Succeeds 30s 2s Ensure All Nodes Are In Response ${REST_CONTEXT} ${node_list}
Get nodeconnector for a node 1
[Documentation] Get the inventory for a node
[Tags] restconf
Log ${start}
${resp} Get session ${REST_CONTEXT}/node/openflow:1
Should Be Equal As Strings ${resp.status_code} 200
Should Contain ${resp.content} openflow:1:1
Should Contain ${resp.content} openflow:1:2
A test case file, for our purposes, contains the following default sections:
Settings, Variables, Test Cases, Setup and Teardown.
Setup and Teardown usually defined in resources file or initialization file.
Created by Jan Medved
www.opendaylight.org
Initialization File Format
9
*** Settings ***
Documentation Flow test suite for the OpenDaylight karaf-compatible feature set
Suite Setup Start Suite
Suite Teardown Stop Suite
Resource ../../../libraries/Utils.txt
*** Variables ***
*** Keywords ***
[Teardown]
This section is used to shutdown systems, close connections, and cleanup configurations.
Created by Jan Medved
www.opendaylight.org
Test Suite Contents
10
Recommended Test Suite Contents
 Setup
 Settings
 Resource file
 Keywords
 Documentation
 Log
 Tags
 Test case step(s)
 Tear Down
Created by Jan Medved
www.opendaylight.org
Test Suite Contents
11
 A test case file can contain other configuration information to ease the processing and speed
results such as specifying variables, path to external keywords or python functions or other
configuration data.
 When a test directory is executed, the files and directories it contains are processed recursively
as follows:
 Files and directories with names starting with a dot (.) or an underscore (_) are ignored.
 Directories with the name CVS are ignored (case-sensitive).
 Files not having one of the recognized extensions (.html, .xhtml, .htm, .tsv, .txt, .rst, or .rest) are
ignored (case-insensitive).
 Other files and directories are processed.
 If a file or directory that is processed does not contain any test cases, it is silently ignored (a
message is written to the syslog) and the processing continues.
Created by Jan Medved
www.opendaylight.org
12
Test execution is normally started using pybot, jybot or ipybot runner script.
These scripts are otherwise identical, but the first one executes tests using Python, the second using Jython, and the last one using IronPython.
Regardless of execution approach, the path (or paths) to the test data to be executed is given as an argument after the command.
Additionally, different command line options can be used to alter the test execution or generated outputs in some way.
Specifying test data to be executed
Robot Framework test cases are created in files and directories, and they are executed by giving the path to the file or directory in question to the selected runner
script. The path can be absolute or, more commonly, relative to the directory where tests are executed from.
The given file or directory creates the top-level test suite, which gets its name, unless overridden with the --name option, from the file or directory name.
Example cli command to execute test cases / suites
pybot test_cases.html | pybot path/to/my_tests/ | pybot c:robottests.txt
It is also possible to give paths to several test case files or directories at once, separated with spaces. In this case, Robot Framework creates the top-level test suite
automatically, and the specified files and directories become its child test suites.
The name of the created test suite is derived from child suite names by concatenating them together with an ampersand (&) and spaces.
These automatically created names are often quite long and complicated. In most cases, it is thus better to use the --name option for overriding it:
pybot my_tests.html your_tests.html pybot --name Example path/to/tests/pattern_*.html
Using options
Robot Framework provides a number of command line options that can be used to control how test cases are executed and what outputs are generated.
When options are used, they must always be given between the runner script and the data sources. For example:
pybot -L debug my_tests.txt pybot --include smoke --variable HOST:10.0.0.42 path/to/tests/
Test Suite Execution
Created by Jan Medved
www.opendaylight.org
Short and long options
Options always have a long name, such as --name, and the most frequently needed options also have a short name, such as -N.
In addition to that, long options can be shortened as long as they are unique. For example, --logle DEBUG works, while --
lo log.html does not, because the former matches only --loglevel, but the latter matches several options. Short and
shortened options are practical when executing test cases manually, but long options are recommended in start-up scripts,
because they are easier to understand.
The long option format is case-insensitive, which facilitates writing option names in an easy-to-read format. For example, --
SuiteStatLevel is equivalent to, but easier to read than --suitestatlevel.
Setting option values
Most of the options require a value, which is given after the option name. Both short and long options accept the value
separated from the option name with a space, as in --include tag or -i tag. With long options, the separator can also
be the equals sign, for example --include=tag, and with short options the separator can be omitted, as in -itag.
Some options can be specified several times. For example, --variable VAR1:value --variable
VAR2:another sets two variables. If the options that take only one value are used several times, the value given last is
effective.
Simple patterns
Many command line options take arguments as simple patterns. These glob-like patterns are matched according to the
following rules:
•* is a wildcard matching any string, even an empty string.
•? is a wildcard matching any single character.
•Unless noted otherwise, pattern matching is case, space, and underscore insensitive.
Examples:
--test Example* # Matches tests with name starting 'Example', case insensitively. --include f?? # Matches tests with
a tag that starts with 'f' or 'F' and is three characters long.
Test Suite Execution
13
Created by Jan Medved
www.opendaylight.org
Test Suite Reporting
14
Robot outputs three files detailing the results of the test case / suite run
● Output.xml
Output files contain all the test execution results in machine readable XML
format. Log, report and xUnit files are typically generated based on them, and they can also be
combined and otherwise post-processed with Rebot.
● Report.html
Report files contain an overview of the test execution results in HTML format. They have statistics based
on tags and executed test suites, as well as a list of all executed test cases. When both reports and logs
are generated, the report has links to the log file for easy navigation to more detailed information. It is
easy to see the overall test execution status from report, because its background color is green, if
all critical tests pass, and bright red otherwise.
The command line option --report (-r) determines where report files are created. Similarly as log files,
reports are always created unless NONE is used as a value, and their default name is report.html.
● Log.html
Log files contain details about the executed test cases in HTML format. They have a hierarchical
structure showing test suite, test case and keyword details. Log files are needed nearly every time when
test results are to be investigated in detail. Even though log files also have statistics, reports are better
for getting an higher-level overview.
The command line option --log (-l) determines where log files are created. Unless the special
value NONE is used, log files are always created and their default name is log.html.
Created by Jan Medved
www.opendaylight.org
Robot Test Suite Log File
Example Test Suite Report
15
Created by Jan Medved
www.opendaylight.org
Summary
16
Test Suite and Test Case Automation Best Practices
● Document each test case. Explain the purpose of the test.
● Use the Log function to return useful information about keyword usage and test case runs.
● Only test one attribute of the feature in a test case instead of many attributes.
● Every test case should have a tag to enable/disable test case run.
● Use ‘wait until’ instead of sleep when waiting for a process to complete.
● Use Resource files if your keywords span more than one test case and when using user created
keywords.
● Use an initialization file ‘__init_.txt to start services or systems needed for the tests.
● It is better to use variables instead of static assignment. Make you test suite more portable and
dynamic.
● Keep your test case Clear and concise.
● Clean up the test environment after each test suite run.
● Setup and Teardown sections in test case can be used for this purpose.
● Define global variables in a variables file.
Created by Jan Medved
www.opendaylight.org
Open Daylight Integration Reference
https://wiki.opendaylight.org/view/CrossProject:Integration_Group:Test_Tools
Robot Integrate Dev Environment (RIDE)
https://code.google.com/p/robotframework-ride/
https://github.com/robotframework/RIDE/wiki
https://code.google.com/p/robotframework-ride/wiki/InstallationInstructions
Robot Guides
http://robotframework.org/
https://code.google.com/p/robotframework/
http://robotframework.googlecode.com/hg/doc/userguide/RobotFrameworkUserGuide.html?r=2.8.4#executing-
test-cases
Extending Robot
http://robotframework.googlecode.com/hg/doc/userguide/RobotFrameworkUserGuide.html?r=2.8.4#extending-
robot-framework
http://robotframework.googlecode.com/hg/doc/userguide/RobotFrameworkUserGuide.html?r=2.8.4#test-data-
syntax
How to write good test cases:
https://code.google.com/p/robotframework/wiki/HowToWriteGoodTestCases
References
17

More Related Content

What's hot

Robot Framework Introduction & Sauce Labs Integration
Robot Framework Introduction & Sauce Labs IntegrationRobot Framework Introduction & Sauce Labs Integration
Robot Framework Introduction & Sauce Labs IntegrationSauce Labs
 
Introduction to Robot Framework – Exove
Introduction to Robot Framework – ExoveIntroduction to Robot Framework – Exove
Introduction to Robot Framework – ExoveExove
 
Unit Testing in Python
Unit Testing in PythonUnit Testing in Python
Unit Testing in PythonHaim Michael
 
Robot Framework Introduction
Robot Framework IntroductionRobot Framework Introduction
Robot Framework IntroductionPekka Klärck
 
Robot Framework Dos And Don'ts
Robot Framework Dos And Don'tsRobot Framework Dos And Don'ts
Robot Framework Dos And Don'tsPekka Klärck
 
Robot Framework with Python | Edureka
Robot Framework with Python | EdurekaRobot Framework with Python | Edureka
Robot Framework with Python | EdurekaEdureka!
 
Clean Code summary
Clean Code summaryClean Code summary
Clean Code summaryJan de Vries
 
Robot framework
Robot frameworkRobot framework
Robot frameworkboriau
 
Robot Framework no DevTests #34
Robot Framework no DevTests #34Robot Framework no DevTests #34
Robot Framework no DevTests #34Mayara Fernandes
 
Unit Testing with Python
Unit Testing with PythonUnit Testing with Python
Unit Testing with PythonMicroPyramid .
 
Robot Framework with actual robot
Robot Framework with actual robot Robot Framework with actual robot
Robot Framework with actual robot Eficode
 
Network Protocol Testing Using Robot Framework
Network Protocol Testing Using Robot FrameworkNetwork Protocol Testing Using Robot Framework
Network Protocol Testing Using Robot FrameworkPayal Jain
 
ATDD Using Robot Framework
ATDD Using Robot FrameworkATDD Using Robot Framework
ATDD Using Robot FrameworkPekka Klärck
 
Unit testing best practices
Unit testing best practicesUnit testing best practices
Unit testing best practicesnickokiss
 
Testes pythonicos com pytest
Testes pythonicos com pytestTestes pythonicos com pytest
Testes pythonicos com pytestviniciusban
 

What's hot (20)

Scripting robot
Scripting robotScripting robot
Scripting robot
 
Robot Framework Introduction & Sauce Labs Integration
Robot Framework Introduction & Sauce Labs IntegrationRobot Framework Introduction & Sauce Labs Integration
Robot Framework Introduction & Sauce Labs Integration
 
Introduction to Robot Framework – Exove
Introduction to Robot Framework – ExoveIntroduction to Robot Framework – Exove
Introduction to Robot Framework – Exove
 
Unit Testing in Python
Unit Testing in PythonUnit Testing in Python
Unit Testing in Python
 
Robot framework
Robot frameworkRobot framework
Robot framework
 
Robot Framework Introduction
Robot Framework IntroductionRobot Framework Introduction
Robot Framework Introduction
 
Robot Framework Dos And Don'ts
Robot Framework Dos And Don'tsRobot Framework Dos And Don'ts
Robot Framework Dos And Don'ts
 
Robot Framework with Python | Edureka
Robot Framework with Python | EdurekaRobot Framework with Python | Edureka
Robot Framework with Python | Edureka
 
Clean Code summary
Clean Code summaryClean Code summary
Clean Code summary
 
Robot framework
Robot frameworkRobot framework
Robot framework
 
Robot framework
Robot frameworkRobot framework
Robot framework
 
Robot Framework no DevTests #34
Robot Framework no DevTests #34Robot Framework no DevTests #34
Robot Framework no DevTests #34
 
Unit Testing with Python
Unit Testing with PythonUnit Testing with Python
Unit Testing with Python
 
Robot Framework with actual robot
Robot Framework with actual robot Robot Framework with actual robot
Robot Framework with actual robot
 
Network Protocol Testing Using Robot Framework
Network Protocol Testing Using Robot FrameworkNetwork Protocol Testing Using Robot Framework
Network Protocol Testing Using Robot Framework
 
TestNG
TestNGTestNG
TestNG
 
Clean code
Clean codeClean code
Clean code
 
ATDD Using Robot Framework
ATDD Using Robot FrameworkATDD Using Robot Framework
ATDD Using Robot Framework
 
Unit testing best practices
Unit testing best practicesUnit testing best practices
Unit testing best practices
 
Testes pythonicos com pytest
Testes pythonicos com pytestTestes pythonicos com pytest
Testes pythonicos com pytest
 

Viewers also liked

Robot Framework Introduction
Robot Framework IntroductionRobot Framework Introduction
Robot Framework Introductionlaurent bristiel
 
Yang in ODL by Jan Medved
Yang in ODL by Jan MedvedYang in ODL by Jan Medved
Yang in ODL by Jan MedvedOpenDaylight
 
Что такое Robot Framework?
Что такое Robot Framework?Что такое Robot Framework?
Что такое Robot Framework?Mykhailo Poliarush
 
TestWorks Conf Robot framework - the unsung hero of test automation - Michael...
TestWorks Conf Robot framework - the unsung hero of test automation - Michael...TestWorks Conf Robot framework - the unsung hero of test automation - Michael...
TestWorks Conf Robot framework - the unsung hero of test automation - Michael...Xebia Nederland BV
 
Barcamp Bangkhen :: Robot Framework
Barcamp Bangkhen :: Robot FrameworkBarcamp Bangkhen :: Robot Framework
Barcamp Bangkhen :: Robot FrameworkSomkiat Puisungnoen
 
Wad Robot Framework Pour Jump Camp4 It
Wad Robot Framework Pour Jump Camp4 ItWad Robot Framework Pour Jump Camp4 It
Wad Robot Framework Pour Jump Camp4 ItJérôme BATON
 
Testing More With Less
Testing More With LessTesting More With Less
Testing More With LessTom Swain
 
Automation test scripting techniques
Automation test scripting techniquesAutomation test scripting techniques
Automation test scripting techniquesZhu Zhong
 
Robot framework - Lord of the Rings
Robot framework - Lord of the RingsRobot framework - Lord of the Rings
Robot framework - Lord of the RingsAsheesh Mehdiratta
 
Rf meetup 16.3.2017 tampere share
Rf meetup 16.3.2017 tampere shareRf meetup 16.3.2017 tampere share
Rf meetup 16.3.2017 tampere shareMika Tavi
 
Introduction to Robot Framework
Introduction to Robot FrameworkIntroduction to Robot Framework
Introduction to Robot FrameworkCarl Su
 
Yang in OpenDaylight
Yang in OpenDaylightYang in OpenDaylight
Yang in OpenDaylightGunjan Patel
 
Acceptance Test Driven Development and Robot Framework
Acceptance Test Driven Development and Robot FrameworkAcceptance Test Driven Development and Robot Framework
Acceptance Test Driven Development and Robot FrameworkSteve Zhang
 
10 things you didnt know about appium + whats new in appium 1.5
10 things you didnt know about appium + whats new in appium 1.510 things you didnt know about appium + whats new in appium 1.5
10 things you didnt know about appium + whats new in appium 1.5Sauce Labs
 
SAP GTM Online Training | SAP GTM Training | SAP Netizens
SAP GTM Online Training | SAP GTM Training | SAP NetizensSAP GTM Online Training | SAP GTM Training | SAP Netizens
SAP GTM Online Training | SAP GTM Training | SAP Netizenshttp://www.sapnetizens.com/
 

Viewers also liked (19)

Robot Framework Introduction
Robot Framework IntroductionRobot Framework Introduction
Robot Framework Introduction
 
Yang in ODL by Jan Medved
Yang in ODL by Jan MedvedYang in ODL by Jan Medved
Yang in ODL by Jan Medved
 
Что такое Robot Framework?
Что такое Robot Framework?Что такое Robot Framework?
Что такое Robot Framework?
 
TestWorks Conf Robot framework - the unsung hero of test automation - Michael...
TestWorks Conf Robot framework - the unsung hero of test automation - Michael...TestWorks Conf Robot framework - the unsung hero of test automation - Michael...
TestWorks Conf Robot framework - the unsung hero of test automation - Michael...
 
Barcamp Bangkhen :: Robot Framework
Barcamp Bangkhen :: Robot FrameworkBarcamp Bangkhen :: Robot Framework
Barcamp Bangkhen :: Robot Framework
 
Wad Robot Framework Pour Jump Camp4 It
Wad Robot Framework Pour Jump Camp4 ItWad Robot Framework Pour Jump Camp4 It
Wad Robot Framework Pour Jump Camp4 It
 
Presentation mantis
Presentation mantisPresentation mantis
Presentation mantis
 
Testing More With Less
Testing More With LessTesting More With Less
Testing More With Less
 
Automation test scripting techniques
Automation test scripting techniquesAutomation test scripting techniques
Automation test scripting techniques
 
Robot framework - Lord of the Rings
Robot framework - Lord of the RingsRobot framework - Lord of the Rings
Robot framework - Lord of the Rings
 
Rf meetup 16.3.2017 tampere share
Rf meetup 16.3.2017 tampere shareRf meetup 16.3.2017 tampere share
Rf meetup 16.3.2017 tampere share
 
Introduction to Robot Framework
Introduction to Robot FrameworkIntroduction to Robot Framework
Introduction to Robot Framework
 
Test automation within a scrum process
Test automation within a scrum processTest automation within a scrum process
Test automation within a scrum process
 
Yang in OpenDaylight
Yang in OpenDaylightYang in OpenDaylight
Yang in OpenDaylight
 
SMAC
SMACSMAC
SMAC
 
IoT
IoTIoT
IoT
 
Acceptance Test Driven Development and Robot Framework
Acceptance Test Driven Development and Robot FrameworkAcceptance Test Driven Development and Robot Framework
Acceptance Test Driven Development and Robot Framework
 
10 things you didnt know about appium + whats new in appium 1.5
10 things you didnt know about appium + whats new in appium 1.510 things you didnt know about appium + whats new in appium 1.5
10 things you didnt know about appium + whats new in appium 1.5
 
SAP GTM Online Training | SAP GTM Training | SAP Netizens
SAP GTM Online Training | SAP GTM Training | SAP NetizensSAP GTM Online Training | SAP GTM Training | SAP Netizens
SAP GTM Online Training | SAP GTM Training | SAP Netizens
 

Similar to Integration Group - Robot Framework

Practical SPARQL Benchmarking Revisited
Practical SPARQL Benchmarking RevisitedPractical SPARQL Benchmarking Revisited
Practical SPARQL Benchmarking RevisitedRob Vesse
 
Hybrid automation framework
Hybrid automation frameworkHybrid automation framework
Hybrid automation frameworkdoai tran
 
Automation Framework 042009 V2
Automation Framework   042009  V2Automation Framework   042009  V2
Automation Framework 042009 V2Devukjs
 
Presto Testing Tools: Benchto & Tempto (Presto Boston Meetup 10062015)
Presto Testing Tools: Benchto & Tempto (Presto Boston Meetup 10062015)Presto Testing Tools: Benchto & Tempto (Presto Boston Meetup 10062015)
Presto Testing Tools: Benchto & Tempto (Presto Boston Meetup 10062015)Matt Fuller
 
Organizing Machine Learning Projects - Repository Organization
Organizing Machine Learning Projects - Repository OrganizationOrganizing Machine Learning Projects - Repository Organization
Organizing Machine Learning Projects - Repository OrganizationHao-Wen (Herman) Dong
 
Running and Developing Tests with the Apache::Test Framework
Running and Developing Tests with the Apache::Test FrameworkRunning and Developing Tests with the Apache::Test Framework
Running and Developing Tests with the Apache::Test Frameworkwebhostingguy
 
Ensuring Software Quality Through Test Automation- Naperville Software Develo...
Ensuring Software Quality Through Test Automation- Naperville Software Develo...Ensuring Software Quality Through Test Automation- Naperville Software Develo...
Ensuring Software Quality Through Test Automation- Naperville Software Develo...LinkCompanyAdmin
 
Comparative Development Methodologies
Comparative Development MethodologiesComparative Development Methodologies
Comparative Development Methodologieselliando dias
 
ATAGTR2017 Expanding test horizons with Robot Framework
ATAGTR2017 Expanding test horizons with Robot FrameworkATAGTR2017 Expanding test horizons with Robot Framework
ATAGTR2017 Expanding test horizons with Robot FrameworkAgile Testing Alliance
 
Qtp framework implementation_guide_v1
Qtp framework implementation_guide_v1Qtp framework implementation_guide_v1
Qtp framework implementation_guide_v1Saurabh Singh
 
Testing Django Applications
Testing Django ApplicationsTesting Django Applications
Testing Django ApplicationsGareth Rushgrove
 

Similar to Integration Group - Robot Framework (20)

Practical SPARQL Benchmarking Revisited
Practical SPARQL Benchmarking RevisitedPractical SPARQL Benchmarking Revisited
Practical SPARQL Benchmarking Revisited
 
10071756.ppt
10071756.ppt10071756.ppt
10071756.ppt
 
Hybrid automation framework
Hybrid automation frameworkHybrid automation framework
Hybrid automation framework
 
Automation Framework 042009 V2
Automation Framework   042009  V2Automation Framework   042009  V2
Automation Framework 042009 V2
 
Srgoc dotnet
Srgoc dotnetSrgoc dotnet
Srgoc dotnet
 
Presto Testing Tools: Benchto & Tempto (Presto Boston Meetup 10062015)
Presto Testing Tools: Benchto & Tempto (Presto Boston Meetup 10062015)Presto Testing Tools: Benchto & Tempto (Presto Boston Meetup 10062015)
Presto Testing Tools: Benchto & Tempto (Presto Boston Meetup 10062015)
 
Organizing Machine Learning Projects - Repository Organization
Organizing Machine Learning Projects - Repository OrganizationOrganizing Machine Learning Projects - Repository Organization
Organizing Machine Learning Projects - Repository Organization
 
Testing Toolbox
Testing ToolboxTesting Toolbox
Testing Toolbox
 
11i Logs
11i Logs11i Logs
11i Logs
 
Running and Developing Tests with the Apache::Test Framework
Running and Developing Tests with the Apache::Test FrameworkRunning and Developing Tests with the Apache::Test Framework
Running and Developing Tests with the Apache::Test Framework
 
Ensuring Software Quality Through Test Automation- Naperville Software Develo...
Ensuring Software Quality Through Test Automation- Naperville Software Develo...Ensuring Software Quality Through Test Automation- Naperville Software Develo...
Ensuring Software Quality Through Test Automation- Naperville Software Develo...
 
Comparative Development Methodologies
Comparative Development MethodologiesComparative Development Methodologies
Comparative Development Methodologies
 
Hybrid framework
Hybrid frameworkHybrid framework
Hybrid framework
 
ATAGTR2017 Expanding test horizons with Robot Framework
ATAGTR2017 Expanding test horizons with Robot FrameworkATAGTR2017 Expanding test horizons with Robot Framework
ATAGTR2017 Expanding test horizons with Robot Framework
 
Qtp framework implementation_guide_v1
Qtp framework implementation_guide_v1Qtp framework implementation_guide_v1
Qtp framework implementation_guide_v1
 
ssssssssss
ssssssssssssssssssss
ssssssssss
 
apache_jmeter.pptx
apache_jmeter.pptxapache_jmeter.pptx
apache_jmeter.pptx
 
Automation tips
Automation tipsAutomation tips
Automation tips
 
Automation using ibm rft
Automation using ibm rftAutomation using ibm rft
Automation using ibm rft
 
Testing Django Applications
Testing Django ApplicationsTesting Django Applications
Testing Django Applications
 

More from OpenDaylight

OpenDaylight OpenFlow clustering
OpenDaylight OpenFlow clusteringOpenDaylight OpenFlow clustering
OpenDaylight OpenFlow clusteringOpenDaylight
 
Network Intent Composition in OpenDaylight
Network Intent Composition in OpenDaylightNetwork Intent Composition in OpenDaylight
Network Intent Composition in OpenDaylightOpenDaylight
 
OpenDaylight MD-SAL Clustering Explained
OpenDaylight MD-SAL Clustering ExplainedOpenDaylight MD-SAL Clustering Explained
OpenDaylight MD-SAL Clustering ExplainedOpenDaylight
 
Integration Group - Lithium test strategy
Integration Group - Lithium test strategyIntegration Group - Lithium test strategy
Integration Group - Lithium test strategyOpenDaylight
 
Introduction to JUnit testing in OpenDaylight
Introduction to JUnit testing in OpenDaylightIntroduction to JUnit testing in OpenDaylight
Introduction to JUnit testing in OpenDaylightOpenDaylight
 
ONOS Platform Architecture
ONOS Platform ArchitectureONOS Platform Architecture
ONOS Platform ArchitectureOpenDaylight
 
Security of OpenDaylight platform
Security of OpenDaylight platformSecurity of OpenDaylight platform
Security of OpenDaylight platformOpenDaylight
 
Using OVSDB and OpenFlow southbound plugins
Using OVSDB and OpenFlow southbound pluginsUsing OVSDB and OpenFlow southbound plugins
Using OVSDB and OpenFlow southbound pluginsOpenDaylight
 

More from OpenDaylight (8)

OpenDaylight OpenFlow clustering
OpenDaylight OpenFlow clusteringOpenDaylight OpenFlow clustering
OpenDaylight OpenFlow clustering
 
Network Intent Composition in OpenDaylight
Network Intent Composition in OpenDaylightNetwork Intent Composition in OpenDaylight
Network Intent Composition in OpenDaylight
 
OpenDaylight MD-SAL Clustering Explained
OpenDaylight MD-SAL Clustering ExplainedOpenDaylight MD-SAL Clustering Explained
OpenDaylight MD-SAL Clustering Explained
 
Integration Group - Lithium test strategy
Integration Group - Lithium test strategyIntegration Group - Lithium test strategy
Integration Group - Lithium test strategy
 
Introduction to JUnit testing in OpenDaylight
Introduction to JUnit testing in OpenDaylightIntroduction to JUnit testing in OpenDaylight
Introduction to JUnit testing in OpenDaylight
 
ONOS Platform Architecture
ONOS Platform ArchitectureONOS Platform Architecture
ONOS Platform Architecture
 
Security of OpenDaylight platform
Security of OpenDaylight platformSecurity of OpenDaylight platform
Security of OpenDaylight platform
 
Using OVSDB and OpenFlow southbound plugins
Using OVSDB and OpenFlow southbound pluginsUsing OVSDB and OpenFlow southbound plugins
Using OVSDB and OpenFlow southbound plugins
 

Recently uploaded

Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 

Recently uploaded (20)

Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 

Integration Group - Robot Framework

  • 1. Created by Jan Medved www.opendaylight.org Getting Started with Robot Framework Carol Sanders, Brocade
  • 2. Created by Jan Medved www.opendaylight.org  Robot Framework is a Keyword Driven automation framework using Python or Java as it's backend.  Test cases are automated by writing steps using Robot framework keywords.  Provides a simple library API for creating customized test libraries.  Provides a command line interface and XML based outputs for integration into existing build infrastructure (continuous integration systems).  Report files are created as a result of every pybot execution: report.html, log.html, output.xml.  Implemented with Python – Runs also on Jython (JVM) and IronPython (.NET) – Can be extended natively using Python or Java – Other languages supported via a remote interface  Open source – Apache 2.0 license – Active development and growing community What is Robot Framework 2
  • 3. Created by Jan Medved www.opendaylight.org Test Suite Organization 3
  • 4. Created by Jan Medved www.opendaylight.org Integration CSIT Organization 4 git clone https://git.opendaylight.org/gerrit/integration cd- ./integration/test/ Two directories CSIT – contains the test suites, resource files containing keyword definitions particular to your project tests, and testplans which are all needed to successfully run your test suite. Tools – test scripts specifically written that test features CSIT Directories (you will always put your files here) Libraries Suites Testplans Variables
  • 5. Created by Jan Medved www.opendaylight.org Viewing Test Suites in Robot Framework Ride 5
  • 6. Created by Jan Medved www.opendaylight.org Collections of test cases are called test suites. Test suites are made of files and directories. 1. Now that you have cloned the integration repository, you have the integration test infrastructure needed to begin creating your test suite. 2. Open ride on the command line – ride.py& 3. Open directory to Integration test suites directory -- ./integration/tests/csit/suites 4. Create a new directory. This where your test suite and associated files will be located. Use the name of your project as the directory name. 5. Create a new test suite within the directory just created. 6. Include all elements described in Test Suite Contents: Settings, Keywords, Resource file(s), Variables, Documentation, Tags, Log, Setup, Teardown 7. Follow best practices when writing test cases Creating Robot Framework Tests Suites 6
  • 7. Created by Jan Medved www.opendaylight.org Integration Sample Test Suite 7
  • 8. Created by Jan Medved www.opendaylight.org Sample Test Case Format 8 *** Settings *** Documentation Test suite for RESTCONF inventory Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML} Suite Teardown Delete All Sessions Library Collections Library ../../../libraries/RequestsLibrary.py Library ../../../libraries/Common.py Variables ../../../variables/Variables.py Resource ../../../libraries/Utils.txt *** Variables *** ${REST_CONTEXT} /restconf/operational/opendaylight-inventory:nodes @{node_list} openflow:1 openflow:2 openflow:3 *** Test Cases *** Get list of nodes [Documentation] Get the inventory [Tags] restconf Log ${start} Wait Until Keyword Succeeds 30s 2s Ensure All Nodes Are In Response ${REST_CONTEXT} ${node_list} Get nodeconnector for a node 1 [Documentation] Get the inventory for a node [Tags] restconf Log ${start} ${resp} Get session ${REST_CONTEXT}/node/openflow:1 Should Be Equal As Strings ${resp.status_code} 200 Should Contain ${resp.content} openflow:1:1 Should Contain ${resp.content} openflow:1:2 A test case file, for our purposes, contains the following default sections: Settings, Variables, Test Cases, Setup and Teardown. Setup and Teardown usually defined in resources file or initialization file.
  • 9. Created by Jan Medved www.opendaylight.org Initialization File Format 9 *** Settings *** Documentation Flow test suite for the OpenDaylight karaf-compatible feature set Suite Setup Start Suite Suite Teardown Stop Suite Resource ../../../libraries/Utils.txt *** Variables *** *** Keywords *** [Teardown] This section is used to shutdown systems, close connections, and cleanup configurations.
  • 10. Created by Jan Medved www.opendaylight.org Test Suite Contents 10 Recommended Test Suite Contents  Setup  Settings  Resource file  Keywords  Documentation  Log  Tags  Test case step(s)  Tear Down
  • 11. Created by Jan Medved www.opendaylight.org Test Suite Contents 11  A test case file can contain other configuration information to ease the processing and speed results such as specifying variables, path to external keywords or python functions or other configuration data.  When a test directory is executed, the files and directories it contains are processed recursively as follows:  Files and directories with names starting with a dot (.) or an underscore (_) are ignored.  Directories with the name CVS are ignored (case-sensitive).  Files not having one of the recognized extensions (.html, .xhtml, .htm, .tsv, .txt, .rst, or .rest) are ignored (case-insensitive).  Other files and directories are processed.  If a file or directory that is processed does not contain any test cases, it is silently ignored (a message is written to the syslog) and the processing continues.
  • 12. Created by Jan Medved www.opendaylight.org 12 Test execution is normally started using pybot, jybot or ipybot runner script. These scripts are otherwise identical, but the first one executes tests using Python, the second using Jython, and the last one using IronPython. Regardless of execution approach, the path (or paths) to the test data to be executed is given as an argument after the command. Additionally, different command line options can be used to alter the test execution or generated outputs in some way. Specifying test data to be executed Robot Framework test cases are created in files and directories, and they are executed by giving the path to the file or directory in question to the selected runner script. The path can be absolute or, more commonly, relative to the directory where tests are executed from. The given file or directory creates the top-level test suite, which gets its name, unless overridden with the --name option, from the file or directory name. Example cli command to execute test cases / suites pybot test_cases.html | pybot path/to/my_tests/ | pybot c:robottests.txt It is also possible to give paths to several test case files or directories at once, separated with spaces. In this case, Robot Framework creates the top-level test suite automatically, and the specified files and directories become its child test suites. The name of the created test suite is derived from child suite names by concatenating them together with an ampersand (&) and spaces. These automatically created names are often quite long and complicated. In most cases, it is thus better to use the --name option for overriding it: pybot my_tests.html your_tests.html pybot --name Example path/to/tests/pattern_*.html Using options Robot Framework provides a number of command line options that can be used to control how test cases are executed and what outputs are generated. When options are used, they must always be given between the runner script and the data sources. For example: pybot -L debug my_tests.txt pybot --include smoke --variable HOST:10.0.0.42 path/to/tests/ Test Suite Execution
  • 13. Created by Jan Medved www.opendaylight.org Short and long options Options always have a long name, such as --name, and the most frequently needed options also have a short name, such as -N. In addition to that, long options can be shortened as long as they are unique. For example, --logle DEBUG works, while -- lo log.html does not, because the former matches only --loglevel, but the latter matches several options. Short and shortened options are practical when executing test cases manually, but long options are recommended in start-up scripts, because they are easier to understand. The long option format is case-insensitive, which facilitates writing option names in an easy-to-read format. For example, -- SuiteStatLevel is equivalent to, but easier to read than --suitestatlevel. Setting option values Most of the options require a value, which is given after the option name. Both short and long options accept the value separated from the option name with a space, as in --include tag or -i tag. With long options, the separator can also be the equals sign, for example --include=tag, and with short options the separator can be omitted, as in -itag. Some options can be specified several times. For example, --variable VAR1:value --variable VAR2:another sets two variables. If the options that take only one value are used several times, the value given last is effective. Simple patterns Many command line options take arguments as simple patterns. These glob-like patterns are matched according to the following rules: •* is a wildcard matching any string, even an empty string. •? is a wildcard matching any single character. •Unless noted otherwise, pattern matching is case, space, and underscore insensitive. Examples: --test Example* # Matches tests with name starting 'Example', case insensitively. --include f?? # Matches tests with a tag that starts with 'f' or 'F' and is three characters long. Test Suite Execution 13
  • 14. Created by Jan Medved www.opendaylight.org Test Suite Reporting 14 Robot outputs three files detailing the results of the test case / suite run ● Output.xml Output files contain all the test execution results in machine readable XML format. Log, report and xUnit files are typically generated based on them, and they can also be combined and otherwise post-processed with Rebot. ● Report.html Report files contain an overview of the test execution results in HTML format. They have statistics based on tags and executed test suites, as well as a list of all executed test cases. When both reports and logs are generated, the report has links to the log file for easy navigation to more detailed information. It is easy to see the overall test execution status from report, because its background color is green, if all critical tests pass, and bright red otherwise. The command line option --report (-r) determines where report files are created. Similarly as log files, reports are always created unless NONE is used as a value, and their default name is report.html. ● Log.html Log files contain details about the executed test cases in HTML format. They have a hierarchical structure showing test suite, test case and keyword details. Log files are needed nearly every time when test results are to be investigated in detail. Even though log files also have statistics, reports are better for getting an higher-level overview. The command line option --log (-l) determines where log files are created. Unless the special value NONE is used, log files are always created and their default name is log.html.
  • 15. Created by Jan Medved www.opendaylight.org Robot Test Suite Log File Example Test Suite Report 15
  • 16. Created by Jan Medved www.opendaylight.org Summary 16 Test Suite and Test Case Automation Best Practices ● Document each test case. Explain the purpose of the test. ● Use the Log function to return useful information about keyword usage and test case runs. ● Only test one attribute of the feature in a test case instead of many attributes. ● Every test case should have a tag to enable/disable test case run. ● Use ‘wait until’ instead of sleep when waiting for a process to complete. ● Use Resource files if your keywords span more than one test case and when using user created keywords. ● Use an initialization file ‘__init_.txt to start services or systems needed for the tests. ● It is better to use variables instead of static assignment. Make you test suite more portable and dynamic. ● Keep your test case Clear and concise. ● Clean up the test environment after each test suite run. ● Setup and Teardown sections in test case can be used for this purpose. ● Define global variables in a variables file.
  • 17. Created by Jan Medved www.opendaylight.org Open Daylight Integration Reference https://wiki.opendaylight.org/view/CrossProject:Integration_Group:Test_Tools Robot Integrate Dev Environment (RIDE) https://code.google.com/p/robotframework-ride/ https://github.com/robotframework/RIDE/wiki https://code.google.com/p/robotframework-ride/wiki/InstallationInstructions Robot Guides http://robotframework.org/ https://code.google.com/p/robotframework/ http://robotframework.googlecode.com/hg/doc/userguide/RobotFrameworkUserGuide.html?r=2.8.4#executing- test-cases Extending Robot http://robotframework.googlecode.com/hg/doc/userguide/RobotFrameworkUserGuide.html?r=2.8.4#extending- robot-framework http://robotframework.googlecode.com/hg/doc/userguide/RobotFrameworkUserGuide.html?r=2.8.4#test-data- syntax How to write good test cases: https://code.google.com/p/robotframework/wiki/HowToWriteGoodTestCases References 17