是否有内置的模拟对象可传递给Python单元测试?

问题描述

我通常在单元测试期间实例化一个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()

解决方法

如果您使用的是let data = // here put your JSON let results = [] data['results'].forEach(result =>{ data['users'].forEach(user => { if(result.invited_user_id === user._id){ result.invited_user_id = user results.push(result) } }) }) let finalData = { 'results': results } console.log(finalData) ,只需创建一个fixture

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