code: def test_not_found_exception(
      self, mock_hook, soft_fail, expected_exception
  ):
      mock_hook.return_value.get_instance.return_value = {
          "apiEndpoint": INSTANCE_URL
      }
      mock_hook.return_value.get_pipeline_workflow.side_effect = (
          AirflowNotFoundException()
      )
  
      task = CloudDataFusionPipelineStateSensor(
          task_id="test_task_id",
          pipeline_name=PIPELINE_NAME,
          pipeline_id=PIPELINE_ID,
          project_id=PROJECT_ID,
          expected_statuses={PipelineStates.COMPLETED},
          failure_statuses=FAILURE_STATUSES,
          instance_name=INSTANCE_NAME,
          location=LOCATION,
          gcp_conn_id=GCP_CONN_ID,
          impersonation_chain=IMPERSONATION_CHAIN,
          soft_fail=soft_fail,
      )
  
      with pytest.raises(
          expected_exception,
          match="Specified Pipeline ID was not found.",
      ):
          task.poke(mock.MagicMock())
  
file_path: airflow/tests/providers/google/cloud/sensors/test_datafusion.py
imports: from __future__ import annotations
  from unittest import mock
  import pytest
  from airflow.exceptions import AirflowException, AirflowNotFoundException, AirflowSkipException
  from airflow.providers.google.cloud.hooks.datafusion import PipelineStates
  from airflow.providers.google.cloud.sensors.datafusion import CloudDataFusionPipelineStateSensor
label_desc: Use image node_id 3 for calling the TestCloudDataFusionPipelineStateSensor obj's underlying member method code with example usage: obj.test_not_found_exception(mock_hook, soft_fail, expected_exception) without return types