code: def test_get_vector_complex(
      self, id_field_type, include_output_fields, include_invalid_id
  ):
      name = gen_collection_name()
      self.name = name
      nb = 200
      dim = 128
      schema_payload, data = self.init_collection(name, dim=dim, nb=nb)
      output_fields = get_common_fields_by_data(data)
      uids = []
      for item in data:
          uids.append(item.get("uid"))
      payload = {
          "collectionName": name,
          "outputFields": output_fields,
          "filter": f"uid in {uids}",
      }
      rsp = self.vector_client.vector_query(payload)
      assert rsp["code"] == 200
      res = rsp["data"]
      logger.info(f"res: {len(res)}")
      ids = []
      for r in res:
          ids.append(r["id"])
      logger.info(f"ids: {len(ids)}")
      id_to_get = None
      if id_field_type == "list":
          id_to_get = ids
      if id_field_type == "one":
          id_to_get = ids[0]
      if include_invalid_id:
          if isinstance(id_to_get, list):
              id_to_get[-1] = 0
          else:
              id_to_get = 0
      # get by id list
      payload = {
          "collectionName": name,
          "outputFields": output_fields,
          "id": id_to_get,
      }
      rsp = self.vector_client.vector_get(payload)
      assert rsp["code"] == 200
      res = rsp["data"]
      if isinstance(id_to_get, list):
          if include_invalid_id:
              assert len(res) == len(id_to_get) - 1
          else:
              assert len(res) == len(id_to_get)
      else:
          if include_invalid_id:
              assert len(res) == 0
          else:
              assert len(res) == 1
      for r in rsp["data"]:
          if isinstance(id_to_get, list):
              assert r["id"] in id_to_get
          else:
              assert r["id"] == id_to_get
          if include_output_fields:
              for field in output_fields:
                  assert field in r
  
imports: import datetime
  import random
  import time
  from sklearn import preprocessing
  import numpy
  import sys
  import json
  import time
  from utils import constant
  from utils.utils import gen_collection_name
  from utils.util_log import test_log
  import pytest
  from api.milvus import VectorClient
  from base.testbase import TestBase
  from utils.utils import get_data_by_fields, get_data_by_payload, get_common_fields_by_data
label_desc: Use image node_id 2 for calling the TestGetVector obj's underlying member method code with example usage: obj.test_get_vector_complex(id_field_type, include_output_fields, include_invalid_id) without return types