Как объединить список в строку в фреймворке робота - PullRequest
1 голос
/ 09 апреля 2019

Я создаю хэш md5 для какой-то строки в каркасе робота, и я хочу разделить этот хеш и сохранить только 32 первых символа.

Я пытаюсь использовать список, а затем сокращаю списокно я не могу объединить список обратно в строку.Вот мой код:

${test1}=    Md 5    ${pwd_arg}
${test3}=    Hexdigest
${test4}=    Convert To List    ${test3}
${test5}=    Convert To String    ${test4}[0:32]
${test6}=    Catenate    SEPARATOR=    ${test4}

Вот журналы, в основном я могу вырезать список, но я не могу объединить все элементы в списке обратно в строку

INFO : ${test3} = 0e5751c026e543b2e8ab2eb06099daa1d1e5df47778f7787faab45cdf12fe3a8
INFO : ${test4} = ['0', 'e', '5', '7', '5', '1', 'c', '0', '2', '6', 'e', '5', '4', '3', 'b', '2', 'e', '8', 'a', 'b', '2', 'e', 'b', '0', '6', '0', '9', '9', 'd', 'a', 'a', '1', 'd', '1', 'e', '5', 'd', 'f', '4', '7',...
INFO : ${test5} = ['0', 'e', '5', '7', '5', '1', 'c', '0', '2', '6', 'e', '5', '4', '3', 'b', '2', 'e', '8', 'a', 'b', '2', 'e', 'b', '0', '6', '0', '9', '9', 'd', 'a', 'a', '1']
INFO : ${test6} = ['0', 'e', '5', '7', '5', '1', 'c', '0', '2', '6', 'e', '5', '4', '3', 'b', '2', 'e', '8', 'a', 'b', '2', 'e', 'b', '0', '6', '0', '9', '9', 'd', 'a', 'a', '1']
FAIL : b1404d6cc07abe3805e5960771c0ba72 != 0e5751c026e543b2e8ab2eb06099daa1d1e5df47778f7787faab45cdf12fe3a8
Ending test

Спасибоза вашу помощь.

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Чтобы перейти к вопросу, как поставить - как объединить список членов в строке.
Вы были близки - ключевое слово Catenate очень подходит для этого. Вы должны передать ему различные значения для объединения - и вы передавали только одно, саму переменную списка. Самый простой способ получить их все сразу («они» - члены списка) - это использовать формат @{a list variable} - с префиксом @, структура будет распаковывать список - и передавать все его элементы как отдельные аргументы. , Поэтому, если ваша переменная списка ${test4}, вызов будет

${test6}=    Catenate    SEPARATOR=${EMPTY}    @{test4}

(${EMPTY} - системная переменная для строки "" - пустая строка, чтобы быть немного более явной в намерении.)

Это очень похоже на "".join(an_iterable) в Python - на самом деле реализация ключевого слова делает именно это.


Помимо вопроса, похоже, вашей конечной целью было получить первые 32 символа из строки. Если это так, есть гораздо более простой способ сделать это - просто используйте ключевое слово Get Substring; как это:

${substring}=    Get Substring    ${test3}    0    32
0 голосов
/ 09 апреля 2019

Во-первых, есть намного более простой способ нарезать список в роботе. И Convert to string не работает так, как вы собираетесь в своем коде.

Ниже приведен код для достижения того, что вы пытаетесь сделать:

${test4}=                 Convert To List      ${test3}
${test5}=                 Get Slice From List  ${test4}            0     32
${convertListToString}=   Evaluate             "".join(${test5})
${test6}=                 Catenate             SEPARATOR=   ${convertListToString}    ${otherStringToCatenate} 

Evaluate "".join(${test5}) преобразует список в строку, и оттуда вы можете использовать ключевое слово Catenate для объединения с другой строкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...