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