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:
@@ -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"
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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."""
|
||||||
|
|||||||
@@ -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."""
|
||||||
|
|||||||
@@ -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."""
|
||||||
|
|||||||
@@ -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."""
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user