code: def test_invalid_inputs_required_fields_passed_as_none(self):
      with self.assertRaises(ValueError) as context:
          NotebookJobStep(
              name=STEP_NAME,
              display_name=DISPLAY_NAME,
              description=DESCRIPTION,
              notebook_job_name=None,
              input_notebook=None,
              image_uri=None,
              kernel_name=None,
          ).arguments
      self.assertTrue(
          "Notebook Job Name(None) is not valid. Valid name should start with "
          "letters and contain only letters, numbers, hyphens, and underscores."
          in str(context.exception)
      )
      self.assertTrue(
          "The required input notebook(None) is not a valid file."
          in str(context.exception)
      )
      self.assertTrue(
          "The image uri(specified as None) is required and should be hosted in "
          "same region of the session(us-west-2)."
          in str(context.exception)
      )
      self.assertTrue(
          "The kernel name is required." in str(context.exception)
      )
  
imports: from __future__ import absolute_import
  import unittest
  from mock import Mock, patch
  from sagemaker.workflow.notebook_job_step import NotebookJobStep
  from sagemaker.workflow.functions import Join
label_desc: Use image node_id 4 for calling the TestNotebookJobStep obj's underlying member method code with example usage: obj.test_invalid_inputs_required_fields_passed_as_none() without return types