unittest.mock、mock、mocker 和 pytest-mock 之间有什么区别?

Pri*_*hra 24 python tdd pytest python-unittest pytest-mock

我是 Python 开发新手,我正在使用pytest编写测试用例,我需要模拟一些行为。谷歌搜索pytest 的最佳模拟库,只会让我感到困惑。我见过unittest.mock、mock、mocker 和pytest-mock。不太确定该使用哪一个。有人可以解释一下它们之间的区别并向我推荐一个吗?

Sim*_*awe 15

pytest-mock 是模拟的薄包装。

模拟是从 python 3.3 开始的。实际上与unittest.mock相同。

我不知道 mocker 是否是另一个库,我只知道它是 pytest-mock 提供的夹具的名称,用于在测试中完成模拟。

我个人使用 pytest 和 pytest-mock 进行测试,它允许您编写非常简洁的测试,例如

from pytest_mock import MockerFixture

@pytest.fixture(autouse=True)
def something_to_be_mocked_everywhere(mocker):
    mocker.patch()


def tests_this(mocker: MockerFixture):
    mocker.patch ...
    a_mock = mocker.Mock() ...
    ...
Run Code Online (Sandbox Code Playgroud)

但这主要是由于使用了固定装置,这已经指出是 pytest-mock 提供的。

  • 有没有办法用“pytest”而不是使用“pytest_mock”来“本地”模拟? (3认同)