code: def test_export_to_storage_bucket_no_project_id(
      self, mock_get_conn, mock_project_id
  ):
      self.datastore_hook.admin_connection = mock_get_conn.return_value
      bucket = "bucket"
      namespace = None
      entity_filter = {}
      labels = {}
  
      with pytest.raises(AirflowException) as ctx:
          self.datastore_hook.export_to_storage_bucket(
              bucket=bucket,
              namespace=namespace,
              entity_filter=entity_filter,
              labels=labels,
          )
      assert "project_id" in str(ctx.value)
  
imports: from __future__ import annotations
  from unittest import mock
  from unittest.mock import call, patch
  import pytest
  from airflow.exceptions import AirflowException
  from airflow.providers.google.cloud.hooks.datastore import DatastoreHook
label_desc: Use image node_id 20 for calling the TestDatastoreHook obj's underlying member method code with example usage: obj.test_export_to_storage_bucket_no_project_id(mock_get_conn, mock_project_id) without return types