cosmoguard-bd/tests/RUN_TESTS.md

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
  • 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"