首页 > 解决方案 > 为什么我不能修补 multiprocessing.Process?

问题描述

所以我有这些文件:

发射器.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为:

它们都不起作用。我一直有错误AttributeError: 'TxWorker' object has no attribute 'canary'

我哪里做错了?

标签: pythonpytestpython-multiprocessingpython-unittest.mockpytest-mock

解决方案


推荐阅读