Я внедряю тест для функции func1a () в module1.py с использованием марок. < /p>
Функция func1a () Вызовы: < /p>
Одна функция от module2.py: func2a () < /li>
One Function от Module1. /> < /ul>
Похоже, что порядок, в котором применяются макет, вводит неожиданные эффекты в моем тесте. < /p>
module2.py содержит: < /p>
def func2a()->None:
return None
< /code>
module1.py содержит: < /p>
from module2 import func2a
def func1a()->None:
func2a()
func1b()
return None
def func1b()->None:
return None
< /code>
Тест реализован таким образом: < /p>
from unittest.mock import MagicMock, Mock, call, patch
import pytest
@patch("module1.func1b")
@patch("module2.func2a")
def test_func1a(
mock_func2a:MagicMock,
mock_func1b:MagicMock,
)->None:
from module1 import func1a
mocks = ( mock_func2a,
mock_func1b,
)
mock_manager = Mock()
for mock in mocks:
mock_manager.attach_mock(mock, "mock_" + mock._extract_mock_name())
expected_calls = [
call.mock_func2a(),
call.mock_func1b(),
]
# When
func1a()
# Then
assert mock_manager.mock_calls == expected_calls
< /code>
и работает отлично.@patch("module2.func2a")
@patch("module1.func1b")
def test_func1a(
mock_func1b:MagicMock,
mock_func2a:MagicMock,
)->None:
< /code>
Я столкнулся с следующей ошибкой утверждения < /p>
assert [call.mock_func1b()] == [call.mock_fu...mock_func1b()]
At index 0 diff: call.mock_func1b() != call.mock_func2a()
Right contains 2 more items, first extra item: call.mock_func2b()
< /code>
Я подозреваю, что это может быть из -за порядка, в котором применяются макет. В частности, я думаю, что это связано с тем, что я издеваюсь над функцией, которая импортирует другую функцию, а также высмеивает эту функцию одновременно.>
Подробнее здесь: https://stackoverflow.com/questions/796 ... ing-functi
Неожиданное неудачное утверждение при изменении порядка Python Mocks при насмешней функции, которая импортирует другую в ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение