在测试中模拟多处理Pool.map

时间:2019-07-06 03:35:46

标签: python-3.x pytest monkeypatching

我想在我的代码中使用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]。

0 个答案:

没有答案