code: def test_infer_mutants_handler(self, mock_mutant_charts_for_feature):
      # A no-op that just passes the example passed to mutant_charts_for_feature
      # back through. This tests that the URL parameters get processed properly
      # within infer_mutants_handler.
      def pass_through(
          example, feature_name, serving_bundles, viz_params
      ):
          return {
              "example": str(example),
              "feature_name": feature_name,
              "serving_bundles": [
                  {
                      "inference_address": serving_bundles[
                          0
                      ].inference_address,
                      "model_name": serving_bundles[0].model_name,
                      "model_type": serving_bundles[0].model_type,
                  }
              ],
              "viz_params": {
                  "x_min": viz_params.x_min,
                  "x_max": viz_params.x_max,
              },
          }
  
      mock_mutant_charts_for_feature.side_effect = pass_through
  
      example = test_utils.make_fake_example()
      self.plugin.examples = [example]
  
      response = self.server.get(
          "/data/plugin/whatif/infer_mutants?"
          + urllib_parse.urlencode(
              {
                  "feature_name": "single_int",
                  "model_name": "/ml/cassandrax/iris_classification",
                  "inference_address": "ml-serving-temp.prediction",
                  "model_type": "classification",
                  "model_version": ",",
                  "model_signature": ",",
                  "x_min": "-10",
                  "x_max": "10",
              }
          )
      )
      result = self._DeserializeResponse(response.get_data())
      self.assertEqual(str([example]), result["example"])
      self.assertEqual("single_int", result["feature_name"])
      self.assertEqual(
          "ml-serving-temp.prediction",
          result["serving_bundles"][0]["inference_address"],
      )
      self.assertEqual(
          "/ml/cassandrax/iris_classification",
          result["serving_bundles"][0]["model_name"],
      )
      self.assertEqual(
          "classification", result["serving_bundles"][0]["model_type"]
      )
      self.assertAlmostEqual(-10, result["viz_params"]["x_min"])
      self.assertAlmostEqual(10, result["viz_params"]["x_max"])
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import json
  import os
  import sys
  import numpy
  import tensorflow
  from six.moves import urllib_parse
  from google.protobuf import json_format
  from tensorflow_serving.apis import regression_pb2
  from werkzeug import test
  from werkzeug import wrappers
  from tensorboard.backend import application
  from tensorboard.backend.event_processing import plugin_event_multiplexer
  from tensorboard.plugins import base_plugin
  from utils import inference_utils
  from utils import platform_utils
  from utils import test_utils
  import wit_plugin
label_desc: Use image node_id 10 for calling the InferencePluginTest obj's underlying member method code with example usage: obj.test_infer_mutants_handler(mock_mutant_charts_for_feature) and returns: dict