Back to questions
Junior — Middle
64
Чем отличаются мок-объекты и фикстуры в pytest и как их применять в тестах?
Companies where asked
TechCore
Answer from AI
sobes.tech AI
В pytest фикстуры и мок-объекты служат разным целям, хотя оба помогают в тестировании.
Фикстуры — это функции, которые подготавливают и предоставляют тестовые данные или окружение. Они могут создавать объекты, настраивать состояние, открывать соединения и т.п. Фикстуры удобно использовать для повторного использования кода подготовки в разных тестах.
Пример фикстуры:
import pytest
@pytest.fixture
def sample_data():
return {'key': 'value'}
def test_example(sample_data):
assert sample_data['key'] == 'value'
Мок-объекты (mock) — это объекты-заглушки, которые имитируют поведение реальных зависимостей, позволяя контролировать их поведение и проверять вызовы. Моки полезны, когда нужно изолировать тестируемый код от внешних сервисов или сложных компонентов.
Пример использования mock:
from unittest.mock import Mock
def test_api_call():
mock_service = Mock()
mock_service.get_data.return_value = {'id': 1}
result = some_function_using_service(mock_service)
assert result == expected_result
mock_service.get_data.assert_called_once()
Итого:
- Фикстуры создают и предоставляют тестовые данные или окружение.
- Моки подменяют реальные объекты для контроля поведения и проверки взаимодействий.
Обычно фикстуры могут возвращать моки, объединяя оба подхода.