code: def test_multi_eval_metric(self):
      dtrain, dtest = tm.load_agaricus(__file__)
      watchlist = [(dtest, "eval"), (dtrain, "train")]
      param = {
          "max_depth": 2,
          "eta": 0.2,
          "verbosity": 1,
          "objective": "binary:logistic",
      }
      param["eval_metric"] = ["auc", "logloss", "error"]
      evals_result = {}
      bst = xgb.train(
          param, dtrain, 4, watchlist, evals_result=evals_result
      )
      assert isinstance(bst, xgb.core.Booster)
      assert len(evals_result["eval"]) == 3
      assert set(evals_result["eval"].keys()) == {
          "auc",
          "error",
          "logloss",
      }
  
imports: import json
  import os
  import tempfile
  import numpy
  import pytest
  import xgboost
  from xgboost import testing
  from xgboost.testing.updater import ResetStrategy
label_desc: Use image node_id 7 for calling the TestModels obj's underlying member method code with example usage: obj.test_multi_eval_metric() without return types