Я пытаюсь выполнить тест в проекте, и у меня странная ошибка.
Я воспроизвел очень похожую ситуацию с примером игрушки ниже:
Это структура файла:
.
├── some_package
│ ├── __init__.py
│ └── some_file.py
└── test_mock_patch.py
"""some_package/some_file.py"""
# when I import here, the test fails
from math import floor
def some_func(a, b):
# if I import here, the test passes
# from math import floor
return floor(a + b)
"""test_mock_patch.py"""
import pytest
from unittest import mock
from some_package.some_file import some_func
@pytest.fixture
def mock_floor():
with mock.patch('math.floor', autospec=True) as m:
yield m
def test_some_func(mock_floor):
some_func(1.1, 1)
assert mock_floor.call_count == 1
Используемая команда: pytest -v -s test_mock_patch.py
Ошибка:
Почему, когда я импортирую внутри функции, test_some_func
проходит, а когда я импортирую сверху, тест не пройден?
Заранее спасибо за любую помощь, чтобы объяснить это поведение mock.patch
Версия:
- Python 3.7.3
- pytest 4.4.1