#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.
Надеюсь, это было ясно. Спасибо!