docstr: According to the check_items to check collection properties of res, which return from func_name
  :param res: actual response of init collection
  :type res: Collection
  
  :param func_name: init collection API
  :type func_name: str
  
  :param check_items: which items expected to be checked, including name, schema, num_entities, primary
  :type check_items: dict, {check_key: expected_value}
docstr_tok: ["According","to","the","check_items","to","check","collection","properties","of","res",",","which","return","from","func_name",":","param","res",":","actual","response","of","init","collection",":","type","res",":","Collection",":","param","func_name",":","init","collection","API",":","type","func_name",":","str",":","param","check_items",":","which","items","expected","to","be","checked",",","including","name",",","schema",",","num_entities",",","primary",":","type","check_items",":","dict",",","{","check_key",":","expected_value","}"]
code: def check_describe_collection_property(res, func_name, check_items):
      """
      According to the check_items to check collection properties of res, which return from func_name
      :param res: actual response of init collection
      :type res: Collection
  
      :param func_name: init collection API
      :type func_name: str
  
      :param check_items: which items expected to be checked, including name, schema, num_entities, primary
      :type check_items: dict, {check_key: expected_value}
      """
      exp_func_name = "describe_collection"
      if func_name != exp_func_name:
          log.warning(
              "The function name is {} rather than {}".format(
                  func_name, exp_func_name
              )
          )
      if len(check_items) == 0:
          raise Exception("No expect values found in the check task")
      if check_items.get("collection_name", None) is not None:
          assert res["collection_name"] == check_items.get(
              "collection_name"
          )
      if check_items.get("auto_id", False):
          assert res["auto_id"] == check_items.get("auto_id")
      if check_items.get("num_shards", 1):
          assert res["num_shards"] == check_items.get("num_shards", 1)
      if check_items.get("consistency_level", 2):
          assert res["consistency_level"] == check_items.get(
              "consistency_level", 2
          )
      if check_items.get("enable_dynamic_field", True):
          assert res["enable_dynamic_field"] == check_items.get(
              "enable_dynamic_field", True
          )
      if check_items.get("num_partitions", 1):
          assert res["num_partitions"] == check_items.get(
              "num_partitions", 1
          )
      if check_items.get("id_name", "id"):
          assert res["fields"][0]["name"] == check_items.get(
              "id_name", "id"
          )
      if check_items.get("vector_name", "vector"):
          assert res["fields"][1]["name"] == check_items.get(
              "vector_name", "vector"
          )
      if check_items.get("dim", None) is not None:
          assert res["fields"][1]["params"]["dim"] == check_items.get(
              "dim"
          )
      assert res["fields"][0]["is_primary"] is True
      assert (
          res["fields"][0]["field_id"] == 100
          and res["fields"][0]["type"] == 5
      )
      assert (
          res["fields"][1]["field_id"] == 101
          and res["fields"][1]["type"] == 101
      )
  
      return True
  
imports: from pymilvus.client.types import CompactionPlans
  from pymilvus import Role
  from utils.util_log import test_log
  from common import common_type
  from common import common_func
  from common.common_type import CheckTasks, Connect_Object_Name
  from pymilvus import Collection, Partition, ResourceGroupInfo
  from utils.api_request import Error
  import check.param_check
label_desc: Use image node_id 7 for calling the ResponseChecker obj's underlying member method code with example usage: obj.check_describe_collection_property(res, func_name, check_items) and returns: True