code: def test_execute_timeout(
      self, mock_hook, soft_fail, expected_exception
  ):
      task = GCSObjectsWithPrefixExistenceSensor(
          task_id="task-id",
          bucket=TEST_BUCKET,
          prefix=TEST_PREFIX,
          poke_interval=0,
          timeout=1,
          soft_fail=soft_fail,
      )
      mock_hook.return_value.list.return_value = []
      with pytest.raises(expected_exception):
          task.execute(mock.MagicMock)
          mock_hook.return_value.list.assert_called_once_with(
              TEST_BUCKET, prefix=TEST_PREFIX
          )
  
imports: from __future__ import annotations
  from datetime import datetime, timedelta, timezone
  from unittest import mock
  import pendulum
  import pytest
  from google.cloud.storage.retry import DEFAULT_RETRY
  from airflow.exceptions import AirflowProviderDeprecationWarning, AirflowSensorTimeout, AirflowSkipException, TaskDeferred
  from airflow.models.dag import DAG, AirflowException
  from airflow.providers.google.cloud.sensors.gcs import GCSObjectExistenceAsyncSensor, GCSObjectExistenceSensor, GCSObjectsWithPrefixExistenceSensor, GCSObjectUpdateSensor, GCSUploadSessionCompleteSensor, ts_function
  from airflow.providers.google.cloud.triggers.gcs import GCSBlobTrigger, GCSCheckBlobUpdateTimeTrigger, GCSPrefixBlobTrigger, GCSUploadSessionTrigger
label_desc: Use image node_id 4 for calling the TestGoogleCloudStoragePrefixSensor obj's underlying member method code with example usage: obj.test_execute_timeout(mock_hook, soft_fail, expected_exception) without return types