2017-03-29 73 views
0

我有一個與RobotFramework相關的問題,更精確地讀取文件,grep它爲不同的命令,將它們添加到字典,然後將它們的命令發送到服務器。從文件發送命令到服務器 - robotframework

讓我告訴你我現在有什麼。

我叫第二功能從文件發送命令到服務器

Send commands from file to server 
    [Arguments] ${COMMANDS_FILE} 
    ${FILE_CONTENT}= Get File ${COMMANDS_FILE} 
    @{LINES}= Split to Lines ${FILE_CONTENT} 
    : FOR ${line} IN @{LINES} 
    \ Send command ${line} 

發送命令是正常工作的關鍵詞,只需將命令發送到服務器。

的命令文件看起來像這樣(commands.txt中):

VAL1;VAL2;VAL3; 
    VAL1;VAL4;VAL5; 
    VAL6;VAL7;VAL8 
    VAL6;VAL7;VAL8 

因此,大家可以看到VAL1是兩行相同。

如何獲取VAL1並將其保存在某處(字典或列表),然後從包含VAL1的文件運行所有命令?

回答

1

你必須進一步拆分每一行 - 在;,並檢查是第一個命令你尋找。以下是如何根據您的代碼:

Send commands from file to server 
    [Arguments] ${COMMANDS_FILE} 
    ${FILE_CONTENT}= Get File ${COMMANDS_FILE} 

    @{LINES}= Split to Lines ${FILE_CONTENT} 
    ${commands to run}=  Create List # will store only the commands you want to run 
    :FOR ${line} IN @{LINES} 
     \ ${members}=  Split String  ${line}  separator=; # each command in the line is a list member now 
     \ Run Keyword If  $members[0] == 'VAL1'  Append To List  ${commands to run}  ${line} 

    :FOR ${command_line}  IN  @{commands to run} 
    \ Send Command ${command_line} 
+0

Hello Todor。我想我問我的問題是錯的。更確切地說,我想檢查VAL1是否存在於文件中,如果是,則運行包含VAL1的所有命令(包括val 2; val3;和val4 val5的全行),如上例所示:VAL1; VAL2; VAL3; VAL1; VAL4; VAL5; – Manfeld

+0

@曼菲爾德 - 讓我看看我是否正確理解你:你想要第一次)收集所有以VAL1開頭的命令,然後第二次發送所有附加「;」的命令 - 即作爲鏈接命令?對於第二個,發送的東西應該被調用一次,但是參數應該包含來自所有行的所有命令? – Todor

+0

所以如果是的話,當前版本會發送'VAL1; VAL2; VAL3;',然後發送'VAL1; VAL4; VAL5;',但你只需要一個'發送命令'執行,它必須有' VAL1; VAL2; VAL3; VAL4; VAL5;' – Todor