code: def test_reported_metrics_contain_expected_keys(
      self, mock_report, metrics, expected_metrics_keys, model
  ):
      # Reported metrics contain different keys depending on the value passed to the
      # `metrics` parameter. This test varies the value of `metrics` and asserts that
      # the reported keys are correct.
      model.fit(
          x=np.zeros((1, 1)),
          y=np.zeros((1, 1)),
          validation_data=(np.zeros((1, 1)), np.zeros((1, 1))),
          callbacks=[ReportCheckpointCallback(metrics=metrics)],
      )
  
      for (metrics,), _ in ray.train.report.call_args_list:
          assert metrics.keys() == expected_metrics_keys
  
imports: from typing import Dict, Tuple
  from unittest.mock import patch
  import os
  import pytest
  import numpy
  import tensorflow
  import ray
  from ray import train
  from ray.air.integrations.keras import ReportCheckpointCallback
  from ray.train.constants import TRAIN_DATASET_KEY
  from ray.train import ScalingConfig
  from ray.train.tensorflow import TensorflowTrainer, TensorflowPredictor, TensorflowCheckpoint
label_desc: Use image node_id 2 for calling the TestReportCheckpointCallback obj's underlying member method code with example usage: obj.test_reported_metrics_contain_expected_keys(mock_report, metrics, expected_metrics_keys, model) without return types