docstr: Method:
  1. create rgA
  2. transfer invalid number of nodes from default to rgA
  verify fail with error
docstr_tok: ["Method",":","1.","create","rgA","2.","transfer","invalid","number","of","nodes","from","default","to","rgA","verify","fail","with","error"]
code: def test_transfer_node_with_wrong_num_node(self, num_node):
      """
      Method:
      1. create rgA
      2. transfer invalid number of nodes from default to rgA
      verify fail with error
      """
      # create rgA
      rg_name = cf.gen_unique_str("rg")
      self.init_resource_group(rg_name)
  
      # transfer replicas
      error = {
          ct.err_code: 999,
          ct.err_msg: f"failed to transfer node between resource group, err=nodes not enough",
      }
      if num_node in [0, -1]:
          error = {
              ct.err_code: 999,
              ct.err_msg: f"transfer node num can't be [{num_node}]",
          }
      if type(num_node) is not int:
          error = {ct.err_code: 999, ct.err_msg: "expected one of: int"}
      self.utility_wrap.transfer_node(
          source=ct.default_resource_group_name,
          target=rg_name,
          num_node=num_node,
          check_task=CheckTasks.err_res,
          check_items=error,
      )
  
imports: import pytest
  from base.client_base import TestcaseBase
  from common import common_func
  from common import common_type
  from common.common_type import CaseLabel, CheckTasks
  from utils.util_pymilvus import *
label_desc: Use image node_id 3 for calling the TestTransferNode obj's underlying member method code with example usage: obj.test_transfer_node_with_wrong_num_node(num_node) without return types