SCGR's picture
tests
60b6623
#!/usr/bin/env python3
"""Run all unit tests for the PromptAid Vision backend"""
import unittest
import sys
import os
import time
def run_unit_tests():
"""Discover and run all unit tests"""
print("🧪 Running PromptAid Vision Unit Tests")
print("=" * 50)
# Add the app directory to the path
app_path = os.path.join(os.path.dirname(__file__), '..', '..', 'app')
sys.path.insert(0, app_path)
# Discover tests in the current directory
loader = unittest.TestLoader()
start_dir = os.path.dirname(__file__)
suite = loader.discover(start_dir, pattern='test_*.py')
# Run tests
runner = unittest.TextTestRunner(verbosity=2)
start_time = time.time()
result = runner.run(suite)
end_time = time.time()
duration = end_time - start_time
# Print summary
print("\n" + "=" * 50)
print("UNIT TEST SUMMARY")
print("=" * 50)
print(f"Tests Run: {result.testsRun}")
print(f"Failures: {len(result.failures)}")
print(f"Errors: {len(result.errors)}")
print(f"Skipped: {len(result.skipped)}")
print(f"Duration: {duration:.2f} seconds")
if result.failures:
print("\n❌ FAILURES:")
for test, traceback in result.failures:
print(f" - {test}: {traceback.split('AssertionError:')[-1].strip()}")
if result.errors:
print("\n❌ ERRORS:")
for test, traceback in result.errors:
print(f" - {test}: {traceback.split('Exception:')[-1].strip()}")
if result.skipped:
print("\n⚠️ SKIPPED:")
for test, reason in result.skipped:
print(f" - {test}: {reason}")
if result.wasSuccessful():
print("\n✅ SUCCESS: All unit tests passed!")
return 0
else:
print(f"\n❌ FAILURE: {len(result.failures) + len(result.errors)} test(s) failed!")
return 1
if __name__ == '__main__':
sys.exit(run_unit_tests())