0

我通常Mock在单元测试期间实例化一个对象。我厌倦了:

  1. 不得不打字from unittest.mock import Mock
  2. 然后通过实例化一个Mock对象mock = Mock()

我想知道,pytest, unittest.mock,pytest-mock等是否有内置的传递Mock对象的方式?

这是我当前的工作流程:

from unittest.mock import Mock


def test_something() -> None:
    mock = Mock()
    mock.func()
    mock.func.assert_called_once()

研究

我知道pytest-mock,我至少可以通过mocker夹具绕过导入。

def test_something(mocker) -> None:
    mock = mocker.Mock()
    mock.func()
    mock.func.assert_called_once()

我希望能够做这样的事情:

def test_something(mock) -> None:
    mock.func()
    mock.func.assert_called_once()
4

1 回答 1

1

如果您正在使用pytest只需制作一个夹具

@pytest.fixture(scope="function")
def my_cool_mock():
    mocked = Mock()
    yield mocked

def test_something(my_cool_mock) -> None:
    my_cool_mock.func()
    my_cool_mock.func.assert_called_once()

否则,只需使用pytest-mock.

于 2020-09-23T01:40:35.130 回答