2.6 KiB
Sim-Search API Tests
This directory contains tests for the Sim-Search API.
Test Files
test_api.py
: Tests the core functionality of the API, including authentication, query processing, search execution, and report generation.
Running Tests
Using pytest directly
# Run all tests
pytest
# Run a specific test file
pytest tests/test_api.py
# Run tests with verbose output
pytest -v tests/test_api.py
# Run tests with verbose output and exit on first failure
pytest -xvs tests/test_api.py
# Run tests with coverage report
pytest --cov=app --cov-report=term --cov-report=html tests/test_api.py
Using the run_tests.py script
We provide a convenient script to run the tests with various options:
# Run all tests
python run_tests.py
# Run with verbose output
python run_tests.py --verbose
# Run with -xvs flag (exit on first failure, verbose, show output)
python run_tests.py --xvs
# Run with coverage report
python run_tests.py --coverage
# Run a specific test file
python run_tests.py --test-file tests/test_api.py
Using the test_api_curl.sh script
For manual testing of the API endpoints using curl commands:
# Make the script executable
chmod +x test_api_curl.sh
# Run the script
./test_api_curl.sh
This script will test all the API endpoints in sequence, including:
- Authentication (register, login)
- Query processing and classification
- Search execution and retrieval
- Report generation and management
Test Database
The tests use a separate SQLite database (test.db
) to avoid affecting the production database. This database is created and destroyed during the test run.
Test User
The tests create a test user with the following credentials:
- Email: test@example.com
- Password: password123
- Full Name: Test User
Test Coverage
To generate a test coverage report:
pytest --cov=app --cov-report=term --cov-report=html tests/
This will generate a coverage report in the terminal and an HTML report in the htmlcov
directory.
Continuous Integration
These tests can be integrated into a CI/CD pipeline to ensure that the API is working correctly before deployment.
Troubleshooting
If you encounter issues with the tests:
- Make sure the API server is not running when running the tests, as they will start their own instance.
- Check that the test database is not locked by another process.
- Ensure that all dependencies are installed (
pip install -r requirements.txt
). - If you're getting authentication errors, make sure the JWT secret key is set correctly in the test environment.