Complete reference for TestIQ command-line interface.
testiq [OPTIONS] COMMAND [ARGS]...
Show the version and exit.
testiq --versionShow help message and exit.
testiq --helpAnalyze test coverage data to find duplicates.
Syntax:
testiq analyze COVERAGE_FILE [OPTIONS]Arguments:
COVERAGE_FILE- JSON file containing per-test coverage data (required)
Options:
Similarity threshold (0.0-1.0) for detecting similar tests.
- Type: float
- Default: 0.7
- Range: 0.0 to 1.0
testiq analyze coverage.json --threshold 0.8Higher values = more strict matching (fewer results, higher confidence) Lower values = more lenient matching (more results, may include false positives)
Output file for the report.
- Type: path
- Default: stdout
testiq analyze coverage.json --output report.mdOutput format for the report.
- Type: choice
- Choices:
markdown,json,text - Default:
text
# Markdown format (good for documentation)
testiq analyze coverage.json --format markdown
# JSON format (good for CI/CD integration)
testiq analyze coverage.json --format json
# Text format with rich formatting (default, best for terminal)
testiq analyze coverage.json --format textExamples:
# Basic analysis
testiq analyze coverage_data.json
# Analysis with custom threshold
testiq analyze coverage_data.json --threshold 0.85
# Save markdown report
testiq analyze coverage_data.json --format markdown --output duplicates.md
# Generate JSON for CI pipeline
testiq analyze coverage_data.json --format json --output results.json
# Strict matching (90% similarity)
testiq analyze coverage_data.json -t 0.9 -f markdown -o strict_report.mdRun a demonstration with sample data.
Syntax:
testiq demoDescription:
Runs TestIQ with built-in sample test coverage data to demonstrate functionality. Useful for:
- Understanding output format
- Testing installation
- Learning how to interpret results
Example:
testiq demoTestIQ expects coverage data in JSON format:
{
"test_module::TestClass::test_method_1": {
"src/auth.py": [10, 11, 12, 15, 20, 25],
"src/user.py": [5, 6, 7, 8]
},
"test_module::TestClass::test_method_2": {
"src/auth.py": [10, 11, 12, 15, 20, 25],
"src/user.py": [5, 6, 7, 8]
}
}Format Requirements:
- Top-level object with test names as keys
- Each test maps to an object of filename → line number arrays
- Filenames should be relative paths
- Line numbers must be integers
Rich formatted output with tables and colors, optimized for terminal viewing.
Features:
- Colored tables
- Summary statistics
- Easy to read in terminal
Use when:
- Running interactively
- Viewing results in terminal
- Debugging
GitHub-flavored markdown suitable for documentation and reports.
Features:
- Headers and tables
- Suitable for version control
- Renders in GitHub/GitLab
Use when:
- Generating reports
- Adding to documentation
- Committing to repository
Structured data for programmatic processing.
Features:
- Machine-readable
- Easy to parse
- CI/CD integration
Structure:
{
"exact_duplicates": [
["test1", "test2"],
["test3", "test4", "test5"]
],
"subset_duplicates": [
{
"subset": "test_minimal",
"superset": "test_complete",
"ratio": 0.33
}
],
"similar_tests": [
{
"test1": "test_login_v1",
"test2": "test_login_v2",
"similarity": 0.85
}
]
}Use when:
- CI/CD integration
- Automated processing
- Custom reporting
0- Success1- Error (invalid input, file not found, etc.)
None currently supported.
# 1. Generate coverage data (varies by framework)
pytest --testiq
# 2. Analyze
testiq analyze coverage_data.json
# 3. Review results
# (displayed in terminal)# Generate JSON report for CI
testiq analyze coverage_data.json \
--format json \
--output testiq-report.json
# Check if duplicates exist
if [ $(jq '.exact_duplicates | length' testiq-report.json) -gt 0 ]; then
echo "Found duplicate tests!"
exit 1
fi# Only report tests with 95%+ similarity
testiq analyze coverage_data.json \
--threshold 0.95 \
--format markdown \
--output high-confidence-duplicates.md# Generate all formats
testiq analyze coverage_data.json --format text
testiq analyze coverage_data.json --format markdown -o report.md
testiq analyze coverage_data.json --format json -o data.json- Start with demo: Run
testiq demoto understand output - Adjust threshold: Default 0.7 works for most cases, adjust based on results
- Use markdown for docs: Save reports with
--format markdownfor documentation - JSON for automation: Use
--format jsonfor CI/CD pipelines - Review before deleting: Always manually review flagged tests before removal
- Integration Guide - How to generate coverage data
- API Documentation - Python API reference
- FAQ - Frequently asked questions