В чем разница между 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` для подготовки окружения.