|
|
""" |
|
|
BackgroundFX Pro Test Suite. |
|
|
Comprehensive testing for all modules. |
|
|
""" |
|
|
|
|
|
import os |
|
|
import sys |
|
|
from pathlib import Path |
|
|
|
|
|
|
|
|
parent_dir = Path(__file__).parent.parent |
|
|
sys.path.insert(0, str(parent_dir)) |
|
|
|
|
|
|
|
|
TEST_CATEGORIES = { |
|
|
'unit': 'Unit tests for individual components', |
|
|
'integration': 'Integration tests for component interactions', |
|
|
'api': 'API endpoint tests', |
|
|
'models': 'Model management tests', |
|
|
'pipeline': 'Processing pipeline tests', |
|
|
'performance': 'Performance and benchmark tests', |
|
|
'gpu': 'GPU-specific tests' |
|
|
} |
|
|
|
|
|
def run_tests(category: str = None, verbose: bool = True): |
|
|
""" |
|
|
Run tests for BackgroundFX Pro. |
|
|
|
|
|
Args: |
|
|
category: Optional test category to run |
|
|
verbose: Enable verbose output |
|
|
""" |
|
|
import pytest |
|
|
|
|
|
args = [] |
|
|
|
|
|
if category: |
|
|
if category in TEST_CATEGORIES: |
|
|
args.extend(['-m', category]) |
|
|
else: |
|
|
print(f"Unknown category: {category}") |
|
|
print(f"Available categories: {', '.join(TEST_CATEGORIES.keys())}") |
|
|
return 1 |
|
|
|
|
|
if verbose: |
|
|
args.append('-v') |
|
|
|
|
|
|
|
|
args.extend(['--cov=.', '--cov-report=term-missing']) |
|
|
|
|
|
return pytest.main(args) |
|
|
|
|
|
|
|
|
def run_quick_tests(): |
|
|
"""Run quick unit tests only (no slow/integration tests).""" |
|
|
import pytest |
|
|
return pytest.main(['-m', 'not slow and not integration', '-v']) |
|
|
|
|
|
|
|
|
def run_gpu_tests(): |
|
|
"""Run GPU-specific tests if GPU is available.""" |
|
|
import torch |
|
|
|
|
|
if not torch.cuda.is_available(): |
|
|
print("No GPU available, skipping GPU tests") |
|
|
return 0 |
|
|
|
|
|
import pytest |
|
|
return pytest.main(['-m', 'gpu', '-v']) |
|
|
|
|
|
|
|
|
__all__ = [ |
|
|
'run_tests', |
|
|
'run_quick_tests', |
|
|
'run_gpu_tests', |
|
|
'TEST_CATEGORIES' |
|
|
] |