所以我有这些文件:
发射器.py
import multiprocessing as MP
from common import BaseWorker
class TxWorker(BaseWorker):
... code ...
常见的.py
import multiprocessing as MP
class BaseWorker(MP.Process):
... code ...
现在我有了这个测试文件,用 pytest-mock 插件为 pytest 编写:
from transmitter import TxWorker
class MockProcess:
def __init__(self, name, *args, **kwargs):
self.name = name
def canary():
return "Mocked!"
@pytest.fixture(scope="module")
def mocked_process(module_mocker):
module_mocker.patch(WHERE_TO_PATCH, MockProcess)
yield
def test_case(mocked_process):
tw = TxWorker()
assert tw.canary() == "Mocked!"
我无法让这个测试工作。
我尝试设置WHERE_TO_PATCH
为:
transmitter.MP.Process
common.MP.Process
multiprocessing.Process
它们都不起作用。我一直有错误AttributeError: 'TxWorker' object has no attribute 'canary'
。
我哪里做错了?