code: def test_fail_poke(self, get_crawler, soft_fail, expected_exception):
      self.sensor.soft_fail = soft_fail
      crawler_status = "FAILED"
      get_crawler.return_value = {
          "State": "READY",
          "LastCrawl": {"Status": crawler_status},
      }
      message = f"Status: {crawler_status}"
      with pytest.raises(expected_exception, match=message):
          self.sensor.poke(context={})
  
file_path: airflow/tests/providers/amazon/aws/sensors/test_glue_crawler.py
imports: from __future__ import annotations
  from unittest import mock
  import pytest
  from airflow.exceptions import AirflowException, AirflowSkipException
  from airflow.providers.amazon.aws.hooks.glue_crawler import GlueCrawlerHook
  from airflow.providers.amazon.aws.sensors.glue_crawler import GlueCrawlerSensor
label_desc: Use image node_id 5 for calling the TestGlueCrawlerSensor obj's underlying member method code with example usage: obj.test_fail_poke(get_crawler, soft_fail, expected_exception) without return types