legal-doc-masker/backend/docs/TEST_SETUP.md

3.4 KiB

Test Setup Guide

This document explains how to set up and run tests for the legal-doc-masker backend.

Test Structure

backend/
├── tests/
│   ├── __init__.py
│   ├── test_ner_processor.py
│   ├── test1.py
│   └── test.txt
├── conftest.py
├── pytest.ini
└── run_tests.py

VS Code Configuration

The .vscode/settings.json file has been configured to:

  1. Set pytest as the test framework: "python.testing.pytestEnabled": true
  2. Point to the correct test directory: "python.testing.pytestArgs": ["backend/tests"]
  3. Set the working directory: "python.testing.cwd": "${workspaceFolder}/backend"
  4. Configure Python interpreter: Points to backend virtual environment

Running Tests

From VS Code Test Explorer

  1. Open the Test Explorer panel (Ctrl+Shift+P → "Python: Configure Tests")
  2. Select "pytest" as the test framework
  3. Select "backend/tests" as the test directory
  4. Tests should now appear in the Test Explorer

From Command Line

# From the project root
cd backend
python -m pytest tests/ -v

# Or use the test runner script
python run_tests.py

From VS Code Terminal

# Make sure you're in the backend directory
cd backend
pytest tests/ -v

Test Configuration

pytest.ini

  • testpaths: Points to the tests directory
  • python_files: Looks for files starting with test_ or ending with _test.py
  • python_functions: Looks for functions starting with test_
  • markers: Defines test markers for categorization

conftest.py

  • Path setup: Adds backend directory to Python path
  • Fixtures: Provides common test fixtures
  • Environment setup: Handles test environment initialization

Troubleshooting

Tests Not Discovered

  1. Check VS Code settings: Ensure python.testing.pytestArgs points to backend/tests
  2. Verify working directory: Ensure python.testing.cwd is set to ${workspaceFolder}/backend
  3. Check Python interpreter: Make sure it points to the backend virtual environment

Import Errors

  1. Check conftest.py: Ensures backend directory is in Python path
  2. Verify init.py: Tests directory should have an __init__.py file
  3. Check relative imports: Use absolute imports from the backend root

Virtual Environment Issues

  1. Create virtual environment: python -m venv .venv
  2. Activate environment:
    • Windows: .venv\Scripts\activate
    • Unix/MacOS: source .venv/bin/activate
  3. Install dependencies: pip install -r requirements.txt

Test Examples

Simple Test

def test_simple_assertion():
    """Simple test to verify pytest is working"""
    assert 1 == 1
    assert 2 + 2 == 4

Test with Fixture

def test_with_fixture(sample_data):
    """Test using a fixture"""
    assert sample_data["name"] == "test"
    assert sample_data["value"] == 42

Integration Test

def test_ner_processor():
    """Test NER processor functionality"""
    from app.core.document_handlers.ner_processor import NerProcessor
    processor = NerProcessor()
    # Test implementation...

Best Practices

  1. Test naming: Use descriptive test names starting with test_
  2. Test isolation: Each test should be independent
  3. Use fixtures: For common setup and teardown
  4. Add markers: Use @pytest.mark.slow for slow tests
  5. Documentation: Add docstrings to explain test purpose