PyTest - 将模拟应用于所有测试

PyTest - Apply mock to all tests

我想申请一个适用于所有测试的 mock/patch,我该怎么做?

我曾尝试将其放入夹具中,并在任何地方使用夹具,但是,在每次测试中重新应用 mock/patch 会导致 id(my_mock) 值不一致。

您可以通过将夹具限定为 'session' 并在所有测试中使用它来使夹具在所有测试套件执行中仅应用一次:

import pytest
from unittest import mock

@pytest.fixture(scope='session', autouse=True)
def my_thing_mock():
    with mock.patch.object(TheThingYouWantToMock, 'some_attribute') as _fixture:
        yield _fixture