cwltest
Common Workflow Language testing framework
What it is and what it does
cwltest is a testing framework for validating Common Workflow Language (CWL) tools and workflows. It reads test case definitions from YAML files, executes them against a CWL runner, and compares the actual outputs to expected results. The package is used to run the official CWL conformance test suite and can generate JSON badge data for displaying test results.
The tool integrates with pytest and supports custom file access modules, allowing you to test CWL implementations that write outputs to remote storage systems rather than local filesystems. It runs on the command line and can be extended by implementing alternate storage backends through Python entry points.
Use it for:
- Run CWL conformance tests to verify a workflow engine's compliance with the CWL specification.
- Validate custom CWL tools and workflows before deploying them to production pipelines.
- Generate conformance badges showing test pass rates for documentation or CI/CD dashboards.
- Test CWL implementations that use non-local storage (cloud buckets, remote filesystems) via custom fsaccess modules.
- Integrate CWL validation into continuous integration pipelines to catch workflow regressions.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
cwltest validates the output of Common Workflow Language tools and workflows by running test cases defined in YAML and comparing results against expected outputs.
Yes. cwltest is actively maintained, has no known vulnerabilities, installs with minimal friction, and is the standard testing tool for CWL workflows. Install it if you develop, validate, or run Common Workflow Language tools or need to verify CWL engine compliance.
Install
cwltest on PyPI
pip
pip install cwltestuv
uv add cwltestpoetry
poetry add cwltestInstalling cwltest
Before you install
Low friction install with only two runtime dependencies (schema-salad and junit-xml). Actively maintained with a release on 2026-08-14 and support for current Python versions (3.10 through 3.15).
License in practice
Licensed under Apache 2.0 (permissive), allowing free use, modification, and distribution with minimal restrictions—suitable for both open-source and commercial projects.
Quickstart
pip install cwltest
from cwltest import main
# Or use the command-line interface:
# cwltest --test test-descriptions.yml --tool cwl-runner
Requires Python 3.10 or later (up to 3.15); CWL tools and a test description YAML file are needed to run actual tests.
Verify before relying
- Whether the package includes built-in test suites or examples beyond the conformance tests mentioned.
- Performance characteristics when running large numbers of test cases or complex workflows.
- Compatibility with specific CWL implementations beyond the generic cwl-runner reference.
Package facts
| License | Apache 2.0 (permissive) |
| Python support | supports the current Python release (<3.16,>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 2 — schema-salad, junit-xml |
| Maintenance | actively maintained — 0 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 120,325/month — #12,033 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: cwltest-2.7.20260814150058-py3-none-any.whl
Tags
More Testing packages
Pluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
pytestpytest is a testing framework that lets you…
permissive · top 100 on PyPI
virtualenvvirtualenv creates isolated Python environments…
permissive · top 100 on PyPI
coverageCoverage.py measures which lines of Python code…
permissive · top 1,000 on PyPI
pytest-asynciopytest-asyncio is a pytest plugin that enables…
permissive · top 1,000 on PyPI
pytest-json-ctrfA pytest plugin that generates test reports in…
permissive · top 1,000 on PyPI
cwltoolcwltool is the reference implementation of the…
permissive · top 15,000 on PyPI
cwl-utilsLoads, parses, and manipulates Common Workflow…
permissive · top 15,000 on PyPI
cwl-upgraderUpgrades Common Workflow Language documents…
permissive · top 15,000 on PyPI
yamaleYamale validates YAML files against a schema…
permissive · top 5,000 on PyPI
flexValidates Swagger 2.0 API specifications…
permissive · top 15,000 on PyPI
pylint-gitlabProvides custom pylint output formatters that…
copyleft · top 5,000 on PyPI
pytest-azurepipelinesA pytest plugin that automatically formats test…
permissive · top 5,000 on PyPI
genbadgeGenerates SVG badges for CI/CD tools and test…
permissive · top 15,000 on PyPI
pykwalifyValidates YAML and JSON data against schemas…
permissive · top 5,000 on PyPI
coverage-badgeGenerates SVG coverage badges from Coverage.py…
permissive · top 15,000 on PyPI