И оформление тестовой функции с помощью mock, и использование mock с помощью pytest.fixture - PullRequest
1 голос
/ 19 марта 2020

Я пишу тестовую функцию, используя 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 макеты с помощью приспособления. Если имеется больше макетов осветителей, то они работают как положено.

Я что-то здесь не так делаю или это можно решить, чтобы я мог использовать как декораторы, так и осветители без их замены друг друга?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...