| """ |
| Pytest configuration for LightRAG tests. |
| |
| This file provides command-line options and fixtures for test configuration. |
| """ |
|
|
| import pytest |
|
|
|
|
| def pytest_configure(config): |
| """Register custom markers for LightRAG tests.""" |
| config.addinivalue_line( |
| "markers", "offline: marks tests as offline (no external dependencies)" |
| ) |
| config.addinivalue_line( |
| "markers", |
| "integration: marks tests requiring external services (skipped by default)", |
| ) |
| config.addinivalue_line("markers", "requires_db: marks tests requiring database") |
| config.addinivalue_line( |
| "markers", "requires_api: marks tests requiring LightRAG API server" |
| ) |
|
|
|
|
| def pytest_addoption(parser): |
| """Add custom command-line options for LightRAG tests.""" |
|
|
| parser.addoption( |
| "--keep-artifacts", |
| action="store_true", |
| default=False, |
| help="Keep test artifacts (temporary directories and files) after test completion for inspection", |
| ) |
|
|
| parser.addoption( |
| "--stress-test", |
| action="store_true", |
| default=False, |
| help="Enable stress test mode with more intensive workloads", |
| ) |
|
|
| parser.addoption( |
| "--test-workers", |
| action="store", |
| default=3, |
| type=int, |
| help="Number of parallel workers for stress tests (default: 3)", |
| ) |
|
|
| parser.addoption( |
| "--run-integration", |
| action="store_true", |
| default=False, |
| help="Run integration tests that require external services (database, API server, etc.)", |
| ) |
|
|
|
|
| def pytest_collection_modifyitems(config, items): |
| """Modify test collection to skip integration tests by default. |
| |
| Integration tests are skipped unless --run-integration flag is provided. |
| This allows running offline tests quickly without needing external services. |
| """ |
| if config.getoption("--run-integration"): |
| |
| return |
|
|
| skip_integration = pytest.mark.skip( |
| reason="Requires external services(DB/API), use --run-integration to run" |
| ) |
|
|
| for item in items: |
| if "integration" in item.keywords: |
| item.add_marker(skip_integration) |
|
|
|
|
| @pytest.fixture(scope="session") |
| def keep_test_artifacts(request): |
| """ |
| Fixture to determine whether to keep test artifacts. |
| |
| Priority: CLI option > Environment variable > Default (False) |
| """ |
| import os |
|
|
| |
| if request.config.getoption("--keep-artifacts"): |
| return True |
|
|
| |
| return os.getenv("LIGHTRAG_KEEP_ARTIFACTS", "false").lower() == "true" |
|
|
|
|
| @pytest.fixture(scope="session") |
| def stress_test_mode(request): |
| """ |
| Fixture to determine whether stress test mode is enabled. |
| |
| Priority: CLI option > Environment variable > Default (False) |
| """ |
| import os |
|
|
| |
| if request.config.getoption("--stress-test"): |
| return True |
|
|
| |
| return os.getenv("LIGHTRAG_STRESS_TEST", "false").lower() == "true" |
|
|
|
|
| @pytest.fixture(scope="session") |
| def parallel_workers(request): |
| """ |
| Fixture to determine the number of parallel workers for stress tests. |
| |
| Priority: CLI option > Environment variable > Default (3) |
| """ |
| import os |
|
|
| |
| cli_workers = request.config.getoption("--test-workers") |
| if cli_workers != 3: |
| return cli_workers |
|
|
| |
| return int(os.getenv("LIGHTRAG_TEST_WORKERS", "3")) |
|
|
|
|
| @pytest.fixture(scope="session") |
| def run_integration_tests(request): |
| """ |
| Fixture to determine whether to run integration tests. |
| |
| Priority: CLI option > Environment variable > Default (False) |
| """ |
| import os |
|
|
| |
| if request.config.getoption("--run-integration"): |
| return True |
|
|
| |
| return os.getenv("LIGHTRAG_RUN_INTEGRATION", "false").lower() == "true" |
|
|