RF框架基礎知識(二)



•    工程結構
•     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}    Set Variable    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方法實現,然后引用;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM