1. 程式人生 > >RF框架基礎知識(二)

RF框架基礎知識(二)

使用下標 util index space 區分 dbutil ole date requests


• 工程結構
• Project工程
• TestSuite測試套件
• TestCase測試案例
• Resource資源文件
• Settings設置項-導入加載資源
• ExternalResource外部資源
• 常量和變量
• Keyword關鍵字
• 循環&分支
• RF內置測試庫

工程結構

技術分享圖片

Settings設置項
• DefaultTags用於指定 測試用例的標簽.
• Library 引入的各種依賴包

eg:Library JdbutilLibrary
• Resource 各種依賴文件
註意路徑結構:Resource ../../values/test/urlconf.robot
• Setup 在測試用例之前執行
• TestTemplate用於指定 測試模板.測試用例本身將只包含數據,每行數據都是傳遞給該關鍵字的參數,最終實現數據驅動的測試

常量與變量
• 常量
環境變量(統一用標識符”%”來使用)
數值常量(例如數值2.6,可以寫成${2.6})
特殊字符常量(${/},${:},${False},${None},${SPACE}等)

• 變量介紹:
Robot Framework 的變量分為 標量, 列表 和 字典, 分別使用語法格式 ${SCALAR}, @{LIST} 和 &{DICT} 來定義。
• 變量賦值 ----變量定義區域:變量區,case區域
${service} SetVariable rpmBindCardInit
• 取關鍵字返回值作為變量值
${request_time} sendPost.Get Time Stamp
${RESPONSE} DO SOMETHING ${PARAMS}
或:
${RESPONSE}= DOSOMETHING ${PARAMS}


• 列表變量賦值
@{NAMES} Matti Teppo
@{NAMES2} @{NAMES} Seppo
@{NOTHING}
@{MANY} one two three four
... five six seven
• 獲取列表項
使用下標語法 @{NAME}[index] 可以獲取到列表變量中指定項的值, 其中 index 是要獲取的項的下標. 下標從0開始, 負數的下標等同於從列表末尾向前數. 下標長度超過列表範圍會導致錯誤.eg.@{USER}[0]
也可以使用For循環遍歷列表
• 字典聲明
&{USER1} name=Matti address=xxx phone=123
&{USER2} name=Teppo address=yyy phone=456
&{MANY}first=1 second=${2} ${3}=third
&{EVENMORE} &{MANY} first=override empty=
... =empty key\=here=value
• 獲取字典值
可以通過 &{NAME}[key] 這樣的語法格式獲取字典中某項的值, 其中 key 是鍵的名稱. 鍵名當作字符串處理, 非字符串的鍵可以用變量代替. 通過這種方式獲取到的值可作為標量變量使用.
當字典被當作列表叠代時, 實際返回的值是字典的鍵. 例如, @{MANY} 變量的值是 [‘first‘, ‘second‘, 3].

Keywords
基準庫中的關鍵字:log、定義變量:Set variable、連接對象:Catenate、定義列表:Create List、設置休眠時間:sleep等。
自定義關鍵字:
• GetPay Password
${cipher}Password PayEncrypt ${S_KEY} ${USER_PASSWORD_PAY}
[Return] ${cipher}
• GETNOW TIME S
${timestamp} JdbutilLibrary.Get Timestamp s
[Return] ${timestamp}
• GETNOW TIME MS
• ${timestampms} JdbutilLibrary.Get Timestamp ms

循環和分支
• runkeyword if分支
run keyword if ${timeLimited}
... client http post ${USER2.session} /mybankv21/phptradeui/extendterm/add data=${submitData} expect=1
... ELSE
• For循環:
• 在一個普通的For循環中,循環開始的關鍵字是 :FOR ,其中的:用於與一般關鍵字做區分,對於循環結構體內的每一行,使用\ 作為改行的行首關鍵字
[Arguments] @{users}
: FOR ${user} IN @{users}
\ User Login ${user}

RF內置測試庫
• Builtin: Robot Framework 標準類庫,提供常用的關鍵字,例如:log
• Convert:轉換-eg:類型轉換、大小寫轉換
• Verify:Fail,停止當前Case
• Variables:${service} Set Variable rpmBindCardInit
• RunKeyword:Run Keyword If Test Failed
• Evaluate:隨機數、隨機字符串、字符串處理、日期處理等
• ${str} Evaluate String.ascii_uppercase string
• Collections(List、Dictionary)
• ${commitData} Create Dictionary
• ... comp_jdbid=11111
• DateTime、File、path等等

PythonRequests-發送請求
• Get方法:requests.get(url+uri+‘?‘+res,cookies=cookie,headers=header)
• Post方法:r = requests.post(url+uri,cookies=cookie,data=data)
• 不需要cookie信息: req = request.Request(url+uri, data=data)

結果查看及問題定位
• 通過DEBUG打斷點調試,在Message Log窗口中查看日誌;
• 通過console控制臺打開report.html或log.html查看詳細信息;

debug

技術分享圖片

常見問題
• 引用方法後,進行導包,ctrl+1;
• 空格不符合規範會報錯,建議直接使用Tab鍵;
• 所需關鍵字沒有被封裝,自己完成python方法實現,然後引用;

RF框架基礎知識(二)