我想应用一个适用于所有测试的模拟/补丁,我该怎么做?
我曾尝试将它放在一个夹具中,并在任何地方使用夹具,但是,在每次测试中重新应用mock / patch会导致id(my_mock)
值不一致。
答案 0 :(得分:4)
您可以通过将夹具范围限定为'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