Data-driven testing in Robot Framework allows you to execute the same test logic with multiple sets of input data. This is extremely useful for testing various scenarios, boundary conditions, and data combinations without having to write repetitive test cases. Here are the primary ways to achieve data-driven testing in Robot Framework:
1. Using FOR Loops:
Simplest Approach: For basic data-driven testing, you can use FOR loops to iterate over a list of values or dictionaries.
***Test Cases***
Data Driven Test with List
@{users} Create List user1 user2 user3
FOR ${user} IN @{users}
Log Testing with user: ${user}
# Perform test steps using ${user}
Data Driven Test with Dictionary
&{user_data} Create Dictionary name=John age=30 city=New York
FOR ${key} ${value} IN &{user_data}
Log ${key}: ${value}
# Perform test steps using ${key} and ${value}
2. Using Test Template:
More Structured: The Test Template setting allows you to define a keyword that acts as a template for your test cases. You then provide the data in the ***Test Cases*** section, and Robot Framework automatically creates test cases for each data row.
***Settings***
Test Template Login with User
***Test Cases***
Valid User 1 user1 password123
Valid User 2 user2 another_password
Invalid User invalid_user wrong_password
***Keywords***
Login with User
[Arguments] ${username} ${password}
Input Text username_field ${username}
Input Password password_field ${password}
Click Button login_button
# Assertions based on login result
In this example, the Login with User keyword is used as a template. Robot Framework will generate three test cases: "Valid User 1," "Valid User 2," and "Invalid User," each with the corresponding data.
3. Using External Data Files:
Most Powerful: For larger datasets, it's best to store the data in external files (CSV, Excel, etc.) and then read it into your tests.
CSV:
***Settings***
Library Collections
***Test Cases***
Data Driven Test from CSV
@{data} Get Lines From File test_data.csv
FOR ${row} IN @{data}
@{values} Split String ${row} ,
${username} Set Variable ${values}[0]
${password} Set Variable ${values}[1]
Log User: ${username}, Password: ${password}
# Perform test steps
Excel: You can use the ExcelLibrary (install it: pip install robotframework-excellibrary) to read data from Excel files.
***Settings***
Library ExcelLibrary
***Test Cases***
Data Driven Test from Excel
Open Excel test_data.xlsx
${sheet} Read Excel Sheet Sheet1
FOR ${row} IN @{sheet}
${username} Set Variable ${row}[0]
${password} Set Variable ${row}[1]
Log User: ${username}, Password: ${password}
# Perform test steps
Close Excel
4. Using the DataDriver Library:
Advanced and Feature-Rich: The DataDriver library (install it: pip install robotframework-datadriver) provides a more comprehensive solution for data-driven testing. It allows you to easily read data from various sources (CSV, Excel, JSON, YAML) and create test cases dynamically.
***Settings***
Library DataDriver file=test_data.csv
***Test Template***
Login with User
***Test Cases*** # These will be generated based on the CSV data
***Keywords***
Login with User
[Arguments] ${username} ${password}
# Test steps
Key Considerations:
Test Template or DataDriver, Robot Framework will automatically generate test case names. You can customize these names using placeholders from your data.