【问题标题】:Is there a built-in mock object to pass in to Python unit test?是否有内置的模拟对象可以传递给 Python 单元测试?
【发布时间】:2020-09-23 01:29:12
【问题描述】:

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

  1. 必须输入from unittest.mock import Mock
  2. 然后通过mock = Mock()实例化一个Mock对象

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

这是我当前的工作流程:

from unittest.mock import Mock


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

研究

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

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()

【问题讨论】:

    标签: python mocking pytest python-unittest.mock pytest-mock


    【解决方案1】:

    如果您使用的是pytest,只需创建一个fixture

    @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

    【讨论】:

    • 是的,我也想过这个。我希望有一些根本不需要定制夹具的东西。我希望它只是内置的。
    猜你喜欢
    • 1970-01-01
    • 2012-08-07
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    相关资源
    最近更新 更多