Как издеваться над всеми методами одного класса — Python

#python #class #patch #fixtures

Вопрос:

Я пытаюсь высмеять весь класс, используя патч. Представьте, что этот класс MyClass() содержит методы foo() , и bar() оба из них возвращают логическое значение.

То, как я пытался это сделать, заключалось в том, чтобы включить приспособление, conftest.py например

 @pytest.fixture(scope="session")
def mock_myclass() -> MagicMock:
    with patch("module.file.MyClass") as myclass_mocked:
         myclass_mocked.foo.return_value = True
         myclass_mocked.bar.return_value = True
         yield myclass_mocked
 

Тогда у меня есть тест, который называется test_some_other_function , например

 def test_some_other_function(mock_myclass: MagicMock, x: int, y:float):
    some_other_function(x,y)
 

Где some_other_function не является членом MyClass , но использует объект из MyClass и вызывает оба foo bar метода и. Однако, когда я пытаюсь или mock_myclass.foo.asseert_called() или mock_myclass.bar.asseert_called() я всегда получаю ошибку ниже, даже если я уверен, что тест достигает тех мест, где foo и bar вызываются.

  AssertionError: Expected 'foo' to have been called.
 

Надеюсь, это было ясно. Спасибо!