2016-06-30 1 views
0

Я хочу передать один список в качестве параметра в моей библиотеке ключевое слово:Я не могу передать список/словарь в моей тестовой библиотеке в рамках робота

ModifyDefaultValue 
    ${DataJson} ModifyDefaultValue ${DataJson} @{vargs} 

И список @vargs совмещена со строкой и списком:

@{vargs} Create List NO=1227003021 requestType=0 [email protected]{destinations} 

В моей библиотеке:

def ModifyDefaultValue(self, dictOri, *vargs): 
    '''<br/> 
     *vargs: List Tyep and format is: var1=value1, var2=value2 
    ''' 
    logger.info("SmartComLibrary ModifyDefaultValue()", also_console=True) 
    for i in range(len(vargs)): 
     logger.info("\t----Type: %s" % str(vargs[i].split("=")[1].__class__)) 

Они всегда являются:

20160630 22:11:07.501 : INFO :  ----Type: <type 'unicode'> 

Но я хочу, чтобы «пункт назначения» должен быть «списком».

ответ

1

Создать список создаст список из 3 строк независимо от того, что вы положили после адресата = ниже.

Create List NO=1227003021 requestType=0 [email protected]{destinations} 

Похоже, вы вручную пытаетесь использовать аргументы ключевых слов. Но Python и Robot Framework поддерживают их, поэтому нет необходимости разбирать и делиться на «=» и т. Д. Измените ключевое слово, чтобы принять аргументы ключевого слова. Затем вместо создания списка вы создаете словарь.

def ModifyDefaultValue(self, dictOri, **kwargs): 
     logger.info("SmartComLibrary ModifyDefaultValue()", also_console=True) 
     for k, v in kwargs.items(): 
      logger.info("\t----Type: %s: %s" % (k, type(v))) 

В тесте:

${destinations} Create List a b c 
&{kwargs} Create Dictionary NO=1227003021 requestType=0 destination=${destinations} 
ModifyDefaultValue asdf &{kwargs} # note the & here 

Выход:

20160630 12:12:41.923 : INFO :  ----Type: requestType: <type 'unicode'> 
20160630 12:12:41.923 : INFO :  ----Type: destination: <type 'list'> 
20160630 12:12:41.923 : INFO :  ----Type: NO: <type 'unicode'> 

В качестве альтернативы, вы можете также ModifyDefaultValue взять Dict в качестве второго аргумента.

def ModifyDefaultValue(self, dictOri, args): 
    logger.info("SmartComLibrary ModifyDefaultValue()", also_console=True) 
    for k, v in args.items(): 
     logger.info("\t----Type: %s: %s" % (k, type(v))) 

В ваших данных:

${destinations} Create List a b c 
&{args} Create Dictionary NO=1227003021 requestType=0 destination=${destinations} 
ModifyDefaultValue asdf ${args} # note the $ here 

Смотрите также:

Смежные вопросы