ira/sim-search-api/run_tests.py

84 lines
2.0 KiB
Python
Executable File

#!/usr/bin/env python3
"""
Run script for the sim-search API tests.
This script runs the API tests and provides a clear output of the test results.
"""
import os
import sys
import argparse
import subprocess
import time
def parse_args():
"""Parse command line arguments."""
parser = argparse.ArgumentParser(description="Run the sim-search API tests")
parser.add_argument(
"--test-file",
type=str,
default="tests/test_api.py",
help="Test file to run",
)
parser.add_argument(
"--verbose",
action="store_true",
help="Enable verbose output",
)
parser.add_argument(
"--xvs",
action="store_true",
help="Run tests with -xvs flag (exit on first failure, verbose, show output)",
)
parser.add_argument(
"--coverage",
action="store_true",
help="Run tests with coverage",
)
return parser.parse_args()
def run_tests(args):
"""Run the tests."""
print(f"Running tests from {args.test_file}...")
# Build the command
command = ["pytest"]
if args.xvs:
command.append("-xvs")
elif args.verbose:
command.append("-v")
if args.coverage:
command.extend(["--cov=app", "--cov-report=term", "--cov-report=html"])
command.append(args.test_file)
# Run the tests
start_time = time.time()
result = subprocess.run(command)
end_time = time.time()
# Print the results
if result.returncode == 0:
print(f"\n✅ Tests passed in {end_time - start_time:.2f} seconds")
else:
print(f"\n❌ Tests failed in {end_time - start_time:.2f} seconds")
return result.returncode
def main():
"""Main function."""
args = parse_args()
# Check if the test file exists
if not os.path.exists(args.test_file):
print(f"Error: Test file {args.test_file} does not exist")
return 1
# Run the tests
return run_tests(args)
if __name__ == "__main__":
sys.exit(main())