code: def test_add_job_flow_steps_one_step(self, num_steps):
      hook = EmrHook(
          aws_conn_id="aws_default",
          emr_conn_id="emr_default",
          region_name="us-east-1",
      )
      cluster = hook.create_job_flow(
          {
              "Name": "test_cluster",
              "Instances": {"KeepJobFlowAliveWhenNoSteps": False},
          }
      )
      steps = [
          {
              "ActionOnFailure": "test_step",
              "HadoopJarStep": {
                  "Args": ["test args"],
                  "Jar": "test.jar",
              },
              "Name": f"step_{i}",
          }
          for i in range(num_steps)
      ]
      response = hook.add_job_flow_steps(
          job_flow_id=cluster["JobFlowId"], steps=steps
      )
  
      assert len(response) == num_steps
      for step_id in response:
          assert re.match("s-[A-Z0-9]{13}$", step_id)
  
imports: from __future__ import annotations
  import re
  from unittest import mock
  import boto3
  import pytest
  from botocore.exceptions import WaiterError
  from moto import mock_emr
  from airflow.exceptions import AirflowException
  from airflow.providers.amazon.aws.hooks.emr import EmrHook
label_desc: Use image node_id 4 for calling the TestEmrHook obj's underlying member method code with example usage: obj.test_add_job_flow_steps_one_step(num_steps) without return types