perf: speed up test suite with parallel execution

- Enable pytest-xdist with -n auto for parallel test execution
- Consolidate migrated_db fixture in conftest.py (was duplicated in 4 files)
- Remove local fixture definitions and unused imports from test files

Test execution: ~24s -> ~5s (~5x speedup)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-28 07:25:18 +00:00
parent c3461b2275
commit cc32370d49
6 changed files with 12 additions and 47 deletions

View File

@@ -51,4 +51,4 @@ pythonpath = ["src"]
python_files = "test_*.py" python_files = "test_*.py"
python_classes = "Test*" python_classes = "Test*"
python_functions = "test_*" python_functions = "test_*"
addopts = "--durations=20" addopts = "--durations=20 -n auto"

View File

@@ -6,6 +6,17 @@ import tempfile
import pytest import pytest
from animaltrack.db import get_db
from animaltrack.migrations import run_migrations
@pytest.fixture
def migrated_db(tmp_path):
"""Create a database with migrations applied."""
db_path = str(tmp_path / "test.db")
run_migrations(db_path, "migrations", verbose=False)
return get_db(db_path)
@pytest.fixture @pytest.fixture
def temp_migrations_dir(tmp_path): def temp_migrations_dir(tmp_path):

View File

@@ -6,18 +6,6 @@ import json
import apsw import apsw
import pytest import pytest
from animaltrack.db import get_db
from animaltrack.migrations import run_migrations
@pytest.fixture
def migrated_db(tmp_path):
"""Create a database with migrations applied."""
db_path = str(tmp_path / "test.db")
migrations_dir = "migrations"
run_migrations(db_path, migrations_dir, verbose=False)
return get_db(db_path)
class TestMigrationCreatesAllTables: class TestMigrationCreatesAllTables:
"""Tests that migration creates all event tables.""" """Tests that migration creates all event tables."""

View File

@@ -4,18 +4,6 @@
import apsw import apsw
import pytest import pytest
from animaltrack.db import get_db
from animaltrack.migrations import run_migrations
@pytest.fixture
def migrated_db(tmp_path):
"""Create a database with migrations applied."""
db_path = str(tmp_path / "test.db")
migrations_dir = "migrations"
run_migrations(db_path, migrations_dir, verbose=False)
return get_db(db_path)
class TestMigrationCreatesAllTables: class TestMigrationCreatesAllTables:
"""Tests that migration creates all reference tables.""" """Tests that migration creates all reference tables."""

View File

@@ -5,9 +5,7 @@ import time
import pytest import pytest
from animaltrack.db import get_db
from animaltrack.id_gen import generate_id from animaltrack.id_gen import generate_id
from animaltrack.migrations import run_migrations
from animaltrack.models.reference import ( from animaltrack.models.reference import (
FeedType, FeedType,
Location, Location,
@@ -26,14 +24,6 @@ from animaltrack.repositories import (
) )
@pytest.fixture
def migrated_db(tmp_path):
"""Create a database with migrations applied."""
db_path = str(tmp_path / "test.db")
run_migrations(db_path, "migrations", verbose=False)
return get_db(db_path)
@pytest.fixture @pytest.fixture
def now_utc(): def now_utc():
"""Current time in milliseconds since epoch.""" """Current time in milliseconds since epoch."""

View File

@@ -1,10 +1,6 @@
# ABOUTME: Tests for the reference data seeder. # ABOUTME: Tests for the reference data seeder.
# ABOUTME: Validates that seeding populates correct data and is idempotent. # ABOUTME: Validates that seeding populates correct data and is idempotent.
import pytest
from animaltrack.db import get_db
from animaltrack.migrations import run_migrations
from animaltrack.models.reference import ProductUnit, UserRole from animaltrack.models.reference import ProductUnit, UserRole
from animaltrack.repositories import ( from animaltrack.repositories import (
FeedTypeRepository, FeedTypeRepository,
@@ -16,14 +12,6 @@ from animaltrack.repositories import (
from animaltrack.seeds import run_seeds from animaltrack.seeds import run_seeds
@pytest.fixture
def migrated_db(tmp_path):
"""Create a database with migrations applied."""
db_path = str(tmp_path / "test.db")
run_migrations(db_path, "migrations", verbose=False)
return get_db(db_path)
class TestSeedCounts: class TestSeedCounts:
"""Tests that seeding creates the correct number of records.""" """Tests that seeding creates the correct number of records."""