code: def test_allocate_ids_no_project_id(
      self, mock_get_conn, mock_project_id
  ):
      self.datastore_hook.connection = mock_get_conn.return_value
      partial_keys = []
  
      with pytest.raises(AirflowException) as ctx:
          self.datastore_hook.allocate_ids(partial_keys=partial_keys)
      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 5 for calling the TestDatastoreHook obj's underlying member method code with example usage: obj.test_allocate_ids_no_project_id(mock_get_conn, mock_project_id) without return types