code: def test_perturb(self, space):
      explore = PerturbExplore()
      rng = RNGStub()
      rng.randint = (
          lambda low, high=None, size=None: numpy.ones(size)
          if size
          else 1
      )
      rng.random = lambda: 1.0
      rng.normal = lambda mean, variance: 0.0
  
      params = {"x": 1.0, "y": 2, "z": 0, "f": 10}
      new_params = explore(rng, space, params)
      for key in space.keys():
          assert new_params[key] in space[key]
  
imports: import numpy
  import pytest
  from base import RNGStub, TrialStub
  from orion.algo.pbt.explore import PerturbExplore, PipelineExplore, ResampleExplore
  from orion.algo.space import Categorical, Dimension
  from orion.core.utils.flatten import flatten
label_desc: Use image node_id 12 for calling the TestPerturb obj's underlying member method code with example usage: obj.test_perturb(space) without return types