PyTest - 将mock应用于所有测试

时间:2018-06-14 22:07:01

标签: python-3.x pytest

我想应用一个适用于所有测试的模拟/补丁,我该怎么做?

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

1 个答案:

答案 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