Automated test framework converter for migrating test cases from Zephyr, JIRA/Xray, and TestLink to Robot Framework format with bulk processing capabilities
Project description
Importobot - Test Framework Converter
| Testing | |
| Package | |
| Meta |
What is Importobot?
Importobot is a Python automation tool that converts test cases from test management frameworks (like Zephyr, JIRA/Xray, and TestLink) into executable Robot Framework format. It is a powerful and flexible open-source tool for migrating legacy test suites to modern automation frameworks.
Organizations often have thousands of test cases in legacy systems. Migrating them manually is a slow, error-prone, and expensive process. Importobot automates this conversion process, saving time and resources while preserving test knowledge and business logic.
Main Features
- Automated Conversion: Convert entire test suites with a single command.
- Bulk Processing: Recursively find and convert test cases in a directory.
- Intelligent Field Mapping: Automatically map test steps, expected results, tags, and priorities.
- Extensible: A modular architecture allows for adding new input formats and conversion strategies.
- Pandas-inspired API: A
pandas-inspired API for seamless integration into CI/CD pipelines and enterprise workflows. - Validation and Suggestions: Proactively validate input data and provide suggestions for ambiguous or poorly-defined test cases.
- High-Quality Output: Maintains a high code quality standard with comprehensive test coverage.
- Production Ready: The project has over 1150 tests and has been validated for enterprise-scale performance.
Installation
The source code is hosted on GitHub: https://github.com/athola/importobot
This project uses uv for package management. First, install uv:
# On macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# On Windows (PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
Then, clone the repository and install the dependencies:
git clone https://github.com/athola/importobot.git
cd importobot
uv sync --dev
Quick Start
Here's a simple example of converting a Zephyr JSON export to a Robot Framework file.
Input (Zephyr JSON):
{
"testCase": {
"name": "User Login Functionality",
"description": "Verify user can login with valid credentials",
"steps": [
{
"stepDescription": "Navigate to login page",
"expectedResult": "Login page displays"
},
{
"stepDescription": "Enter username 'testuser'",
"expectedResult": "Username field populated"
}
]
}
}
Conversion Command:
# Convert a single file
uv run importobot zephyr_export.json converted_tests.robot
Output (Robot Framework):
*** Test Cases ***
User Login Functionality
[Documentation] Verify user can login with valid credentials
[Tags] login authentication
# Navigate to login page
Go To ${LOGIN_URL}
Page Should Contain Login
# Enter username 'testuser'
Input Text id=username testuser
Textfield Value Should Be id=username testuser
API Usage
Importobot provides a pandas-inspired API for easy integration:
Simple Usage
import importobot
# Core bulk conversion
converter = importobot.JsonToRobotConverter()
result = converter.convert_file("input.json", "output.robot")
Enterprise Integration
from importobot.api import validation, converters, suggestions
# CI/CD pipeline validation
try:
validation.validate_json_dict(test_data)
converter = converters.JsonToRobotConverter()
result = converter.convert_directory("/input", "/output")
except importobot.exceptions.ValidationError as e:
print(f"Validation failed: {e}")
# QA suggestion engine
engine = suggestions.GenericSuggestionEngine()
improvements = engine.suggest_improvements(problematic_tests)
Advanced Configuration
import importobot
# Configure for enterprise security
importobot.config.security_level = "strict"
importobot.config.max_batch_size = 1000
# Bulk processing with error handling
converter = importobot.JsonToRobotConverter()
results = converter.convert_directory(
input_dir="/test/exports",
output_dir="/robot/tests",
recursive=True
)
print(f"Converted: {results['success_count']} files")
print(f"Failed: {results['error_count']} files")
Documentation
The official documentation, including a full API reference, is available in the project wiki.
Contributing
All contributions, bug reports, bug fixes, documentation improvements, enhancements, and ideas are welcome.
Please feel free to open an issue on the GitHub issue tracker.
License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file importobot-0.1.0.tar.gz.
File metadata
- Download URL: importobot-0.1.0.tar.gz
- Upload date:
- Size: 120.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f40515f339ebae006e62c325a9003ce055f8ca9664533478a05a72799786ab71
|
|
| MD5 |
7e0d1ee7d03e70c3d77ab267c5d8de2a
|
|
| BLAKE2b-256 |
7381e5905370b6cae50964c417ca4e7157836eec72cb27fc68af43b2bd618be6
|
File details
Details for the file importobot-0.1.0-py3-none-any.whl.
File metadata
- Download URL: importobot-0.1.0-py3-none-any.whl
- Upload date:
- Size: 146.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f11f3a76c745b56788593ba96746e7d880488ac2f19f1bf3e48b23322efb643
|
|
| MD5 |
67ab5e801ccf502536d029508040ad95
|
|
| BLAKE2b-256 |
e6a88f14da18135b4dfd4f8df2ed16c842144ffc447c65aa1521ac14e04b9b03
|