макет многопроцессорной Pool.map в тестировании - PullRequest
1 голос
/ 06 июля 2019

Я хочу написать тестовый пример для метода в моем коде, имитирующего многопроцессорную часть с помощью pytest.

Этот код и мне нужно написать тест для метода моделирования.

from multiprocessing import Pool


class Simulation:
    def __init__(self, num):
        self.num = num

    def simulation(self):
        pool = Pool(processes=self.num)
        val = [1, 2, 3, 4, 5]

        res = pool.map(self.sim, val)

        return res

    def sim(self, val):
        return val * val

Вот тестовый пример.

import pytest

from multi import Simulation


@pytest.fixture
def sim():
    return Simulation(2)


@pytest.fixture
def mock_map():
    def map(self, val1=1, val2=2):
        return [val1, val2]

    return map


def test_sim(sim, mock_map, monkeypatch):
    monkeypatch.setattr('multiprocessing.Pool.map', mock_map)
    res = sim.simulation()
    assert res == [1,2]

При выполнении теста я получаю выходное значение как [1,4,6,16,25], где мне нужно смоделировать выходное значение как [1,2].

...