В чем разница между mock и fixture в pytest

Python Middle Без компании
В чем разница между mock и fixture в pytest
Ответы
**Mock** (из `unittest.mock` или `pytest-mock`) подменяет реальный объект на фейковый для тестирования. Используется для изоляции тестов от внешних зависимостей (API, БД и т.д.). **Fixture** — это функция, которая подготавливает данные или состояние для теста. Может быть переиспользована между тестами, управляется через `@pytest.fixture`. **Пример:** ``` import pytest from unittest.mock import Mock @pytest.fixture def user_data(): return {"name": "Alice", "age": 30} def test_user_age(user_data, mocker): mock_db = mocker.patch("db.get_user", return_value=user_data) result = mock_db() assert result["age"] == 30 ``` **Разница:** - `mock` заменяет объект, `fixture` предоставляет данные. - `mock` обычно временный (в рамках теста), `fixture` может быть сессионной. - `mock` для изоляции, `fixture` для подготовки окружения.