我是 Python 开发的新手,我正在使用 pytest 编写测试用例,我需要模拟一些行为。谷歌搜索 pytest 的最佳模拟库, 只让我感到困惑。我看过 unittest.mock、mock、mocker 和 pytest-mock。不太确定使用哪个。有人可以解释一下它们之间的区别并推荐给我一个吗?
所以 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 提供的。
@NelsonGon 你可以使用
unittest
模拟与 pytest
,例如
def test_app_uses_correct_transformer(monkeypatch):
mock_transformer = MagicMock()
mock_transformer.return_value = None
monkeypatch.setattr("app.transformer", mock_transformer)