A lightweight automated testing framework for command-line applications. Define test cases in JSON/YAML, run all validations with a single command.
Particularly suited for scientific computing — deep HDF5 support with regex table matching, data filtering, and tolerance-based comparison, making simulation result verification effortless.
- Parallel Execution — Multi-thread / multi-process, 3-5x speedup
- Resource-Aware Scheduling — Automatic CPU core management, prevents solver thread runaway
- Sequence Steps — Multi-step execution within a single test case, fail-fast
- Setup Module — Auto-configure environment variables before tests, auto-cleanup after
- File Comparison — Text / JSON / HDF5 / Binary, ready to use from command line
- Filtered Execution — Run specific test cases by name
pip install cli-test-framework- Create
test_cases.json:
{
"test_cases": [
{
"name": "hello",
"command": "echo",
"args": ["Hello World"],
"expected": {
"return_code": 0,
"output_contains": ["Hello World"]
}
}
]
}- Run:
cli-test run test_cases.jsoncli-test run test_cases.json --parallel --workers 4from cli_test_framework.runners import JSONRunner, ParallelJSONRunner
# Sequential
runner = JSONRunner(config_file="test_cases.json")
success = runner.run_tests()
# Parallel
runner = ParallelJSONRunner(config_file="test_cases.json", max_workers=4, execution_mode="thread")
success = runner.run_tests()compare-files result1.h5 result2.h5 --h5-table-regex "output_.*" --h5-rtol 1e-5📖 Full Documentation: docs/user_manual.md
- Run specific test cases by name (
-t/test_case_filter)
- Steps feature: sequential multi-command execution within a single test case, fail-fast
- Resource-aware scheduling: auto-detect CPU cores, semaphore-based core allocation
- Auto-inject
OMP_NUM_THREADS/MKL_NUM_THREADS/NPROCto prevent solver thread runaway - Per-test
timeoutsupport to prevent hanging
- Multi-thread / multi-process parallel execution, 3-5x speedup
Before submitting a PR, please make sure all tests pass:
python tests\run_all.pyMIT