這是用Robot Framework寫程式的概念 ,主要是為了解決一個Robot回傳值把串列值都連在一起便一個字串而無法判斷的問題。例如我輸入一個串列值:[“WFBSS_001”, “WFBSS_004”],拿來打API之後回傳值變成”WFBSS_001WFBSS_004”,整個都連在一起了,我無法一個一個比較裡面的值。所以我寫了一個Keyword來把” WFBSS_001WFBSS_004” 再還原成[“WFBSS_001”, “WFBSS_004”]

  這邊牽扯到兩個我不太熟的Robot Framework的語法,一是For迴圈執行次數,二是如何在Robot中執行四則運算。

  For迴圈有兩種用法,一種是在串列中做迭代,語法如下:

:For    ${Item}   IN    @{Item List}

\    do something

\    do something

 

  另一種就是有執行次數的For Loop,是透過 IN RANGE 語法:

 

:For    ${Index}    IN RANGE    ${Start Value}    ${End Value}    ${Increase Value}

\    do something

\    do something

Comment    ${Increase Value} = 1 by degault

 

  這邊用到的就是IN RANGE 的語法。另外因為Robot FrameWork比較特別,他本身並不能直接進行四則運算,所以需透過Evaluate Keyword來執行四則運算, 如: X = X+5 Robot中是以下方式表示:

 

${X}    Evaluate    ${X}+5

 

  以下是把”WFBSS_001WFBSS_004”分割成[“WFBSS_001”, “WFBSS_004”]之後指定給Dictionary Keyword:

 

Split WFBSS Roles ID Array String to be a List

    [Arguments]    ${argRolesString}

    ${RolesLen}    Get Length    ${argRolesString}

    ${Runs}    Evaluate    ${RolesLen}/9

    ${NewList}    Create List

    ${i}    Set Variable    0

    : FOR    ${index}    IN RANGE    0    ${Runs}

    \    ${StartChar}    Evaluate    0+ ${i} * \ 9

    \    ${EndChar}    Evaluate    9+ ${i} * \ 9

    \    ${s}    Get Substring    ${argRolesString}    ${StartChar}    ${EndChar}

    \    Append To List    ${NewList}     ${s}

    \    Log    ******************************************************************

    \    Log    Runs = ${i}

    \    Log Many    ${NewList}

    \    Log    ******************************************************************

    \    ${i}    Evaluate    ${i} + 1

    &{RetDictionary}    Create Dictionary    Roles_ID=${NewList}

    [Return]    &{RetDictionary}

 

${Runs}: 要分割字串幾次,因為一個WFBSS_00X是九個字元,所以Runs = RolesLen / 9.

${NewList}: 一開始是空的,用來放置被分割好的每一個字串。

For Loop : 分割字串並放入${NewList},總共執行${Runs}次。

&{RetDictionary}: 最後把${NewList} 指定給${RetDictionary} dictionary Key: Roles_ID。 &{RetDictionary} = {Roles_ID=[“WFBSS_001”,”WFBSS_004”]}

arrow
arrow

    jackterrylau 發表在 痞客邦 留言(0) 人氣()