1.9 KiB
1.9 KiB
Quick Start - Running Tests
1. Install Test Dependencies
# Add pytest and related tools
uv add --dev pytest pytest-cov pytest-mock
2. Run the Tests
# Run all unit tests (fast, no API calls)
uv run pytest
# Run with more detail
uv run pytest -v
# Run just the COSING tests
uv run pytest tests/test_cosing_service.py
# Run integration tests (will hit real COSING API)
uv run pytest -m integration
3. See Coverage
# Generate HTML coverage report
uv run pytest --cov=src/pif_compiler --cov-report=html
# Open htmlcov/index.html in your browser
What the Tests Cover
✅ parse_cas_numbers()
- Parses single CAS:
["7732-18-5"]→["7732-18-5"] - Parses multiple:
["7732-18-5/56-81-5"]→["7732-18-5", "56-81-5"] - Handles separators:
/,;,,,-- - Removes parentheses:
["7732-18-5 (hydrate)"]→["7732-18-5"] - Cleans whitespace and invalid dashes
✅ cosing_search()
- Mocks API calls (no internet needed for unit tests)
- Tests search by name, CAS, EC, ID
- Tests error handling
- Integration tests hit real API
✅ clean_cosing()
- Cleans COSING JSON responses
- Removes empty tags
- Parses CAS numbers
- Creates COSING URLs
- Renames fields
Test Results Example
tests/test_cosing_service.py::TestParseCasNumbers::test_single_cas_number PASSED
tests/test_cosing_service.py::TestParseCasNumbers::test_multiple_cas_with_slash PASSED
tests/test_cosing_service.py::TestCosingSearch::test_search_by_name_success PASSED
...
================================ 25 passed in 0.5s ================================
Troubleshooting
Import errors
Make sure you're in the project root:
cd c:\Users\adish\Projects\pif_compiler
uv run pytest
Mock not found
Install pytest-mock:
uv add --dev pytest-mock
Integration tests failing
These hit the real API and need internet. Skip them:
uv run pytest -m "not integration"