這是用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”]}
留言列表