unittest.mock vs mock vs mocker vs pytest-mock

unittest.mock vs mock vs mocker vs pytest-mock

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

所以 pytest-mock 是 mock 的薄包装,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() ...
    ...

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