Я пишу тестовую функцию, используя pytest и mock
. Удивительно, но у меня возникают трудности при использовании @mock.patch()
декоратора и при использовании макета через прибор.
Пример кода
import pytest
import unittest.mock as mock
import source_module
@pytest.fixture
def mock_some_function_by_fixture():
with mock.patch.object(source_module, "some_function") as fixture_mock:
yield fixture_mock
@mock.patch.object(source_module, "some_other_function_to_be_mocked")
def test_my_big_function(mock_some_function_by_fixture):
_ = source_module.my_big_function()
mock_function_by_fixture.assert_called()
В этом случае это Кажется, я не могу и издеваться над декоратором, и над прибором.
По выводу на печать в источнике some_function
я могу сказать, что он не издевается и assert_called()
не получается.
После небольшого возни, кажется, что если есть N
макеты-декораторы, то эти декораторы заменяют сначала N
макеты с помощью приспособления. Если имеется больше макетов осветителей, то они работают как положено.
Я что-то здесь не так делаю или это можно решить, чтобы я мог использовать как декораторы, так и осветители без их замены друг друга?