【robotframework】pycharm+robotframe(轉)


【robotframework】pycharm+robotframe

 

一、環境搭建

二、框架介紹

1.settings

  • 是這個測試套件的全局配置表
  • 說明這個測試套件要使用的測試庫、資源文件
  • 測試套件的環境初始化(setup)和清除(teardown)
  • 該套件內的標簽等

2.Variables

  定義本測試套件的全局變量

3.Keywords

  定義本測試套件的關鍵字(支持返回值[Return])

4.Test Cases

  定義本測試套件的測試用例

復制代碼
*** Settings ***
Library     Selenium2Library
Resource    xxxx
Suite Setup     xxxxx
Suite Teardown
Test Setup
Test Teardown
Default Tags
Force Tags
Test Template
*** Variables ***
${v1}       1
@{list}     1,2,3

*** Keywords ***
Open page
    open browser    www.baidu.com
    
*** Test Cases ***
case1
    xxx
case2
    xxx
復制代碼

測試用例表語法

  • 測試用例表里面的每個用例大概可以分為:
    • 配置部分
    • 用例部分
  • 用例配置部分
    • [Documentation]該用例的文字說明
    • [Tags]該用例的標簽
    • [Setup],[Teardown]該用例的初始化和清除操作
    • [Template]聲明該用例是模板關鍵字驅動的,本用例只包含測試數據
    • [Timeout]設置用例超時時間

三、關鍵字

1.log打印

  log

  log  to console 打印到控制台

2.定義變量

  1)${variable name}  value  (在***Variables***中定義)

  ${variable name}  Set variable  value  (在***Test Cases***中定義)

  2)定義列表

  @{list name}  value1 value2......  (在***Variables***中定義)

  @{list name}  Create List  value1 value2......  (在***Test Cases***中定義)

3.獲取時間

  在 Robot Framework 中也提供操作時間的關鍵字。get time

*** Test Cases ***
case5
${t} get time
log ${t}
sleep 5 #設置休眠時間

 

4.if語句  

通過“run keyword if”關鍵字可以編寫 if 分支語句*** Test Cases ***case2

${a} Set variable 59
run keyword if ${a} > 80 log youxiu
... ELSE IF ${a} > 60 log bujige
... ELSE log bujige

 

注意:分支語句前加“...”

5.for循環  

在 Robot Framework 中編寫循環通過“:for”

復制代碼
*** Test Cases ***
case3
:FOR ${i} IN RANGE 0 10 2 #分別為起始值,結束之和步長,當起始值和結束之為空時,二者默認為0和1
\ log ${i}
\ log end
\ Exit For Loop if '${i}' == '4' #跳出循環
case4
@{list} Create List a b c
:FOR ${i} IN @{list}
\ log ${i}
\ log end
復制代碼

 

注意::FOR ,其中的:用於與一般關鍵字做區分,對於循環結構體內的每一行,使用 \ 作為改行的行首關鍵字

6.Evaluate 

 通過它可以使用 Python 語言中所提供的方法。

*** Test Cases ***
case6
${d} Evaluate random.randint(0,100) random      #變量  關鍵字  調用python方法  方法所在庫
log ${d} ${path}

7.catenate 

8.collection庫

復制代碼
*** Settings ***
Library Collections
*** Test Cases ***
case8
${dict} Create Dictionary a 1 b 2 c 3 #創建字典
${items} Get Dictionary Items ${dict} #獲取字典中的key和value
log ${items}
${key} Get Dictionary Keys ${dict} #獲取字典中的key
log ${key}
${value} Get Dictionary Values ${dict} #獲取字典中的value
log ${value}
${v} Get From Dictionary ${dict} b #獲取字典中key所對應的value
log ${v} 
復制代碼

9、資源文件

  • 在測試套件文件中定義關鍵字的問題
    • 只能在本測試套件中有效,無法共享給其他測試套件使用
  • 使用資源文件
  • 資源文件其實就是RF層面的庫文件
    • 里面可以包含用來共享的變量和關鍵字
    • 資源文件的格式基本也和測試套件文件格式類似(只是不含測試用例)
  • 資源文件的引用Resource

Resource 后可以跟絕對路徑也可以用相對路徑(相對於當前文件所在的目錄),但文件名必須要帶后綴。
如果同級目錄下沒有,就會去path路徑下尋找。

*** Settings *** Library SeleniumLibrary Resource rc.robot

10.導入擴展庫

1).導入python庫-變量

  • 將變量或關鍵字封裝到python文件中
  •  RF***settings***中生命變量文件(以下例子,兩文件在同一路徑下)

    python文件引用時可以使用絕對路徑也可以使用相對路徑,建議使用相對路徑

    使用相對路徑的時候,RF搜索規則和資源文件搜索規則一樣:先搜索當前目錄下該python文件是否存在,沒有的話則根據path路徑查找

    

    

2).python模塊作為測試庫

  • 將變量或關鍵字封裝到python文件中(可封裝成類或直接封裝為方法)
  •  RF***settings***中生命變量文件(以下例子,兩文件在同一路徑下)

    

    

注意:當文件名和類名不一樣時,如文件名為a,類名為b,方法為c(同一路徑下)

***settings***

library   a.b

***test case***

${a}  a.b.c

11.注釋

  使用關鍵字comment或#

四、selenium2Library中的關鍵字

復制代碼
*** Test Cases ***
case9
    Open Browser        https://www.baidu.com/      Firefox     #啟動瀏覽器,瀏覽器為空時,默認啟動firefox
   
#   go to               https://mail.qq.com/                    #跳轉到某個網頁
#   go back                                                     #返回
#    Maximize Browser Window                                    #窗口最大話
    ${width}    ${height}       Get Window size                 #獲取窗口大小
    log     ${width} ${height}
    ${title}    get title                                       #獲取窗口title信息
    log     ${title}
    ${attribute}    get element attribute   id=kw   name        #獲取元素屬性
    log     ${attribute}                                        #添加cookie
    add cookie      mark    dhs
    ${all_cookies}       get cookies                            #獲取所有cookies
    log     ${all_cookies}
    ${cookie}   get cookie        BAIDUID                 #根據key_name獲取cookie值
    log     ${cookie}
    ${result}   should contain      ${title}        百度一下,你就知道       #驗證是否包含
    log     ${result}
#    delete cookie       mark                                    #根據key_name刪除cookie值
#    delete all cookies
#    get text       id=                                         #獲取元素文本信息
#    input text      id=kw      robotframework                  #文本輸入關鍵字    定位方式    輸入的文本
#    input text      name=wd      robotframework
#    input text      Xpath = //*[@id='kw']    robotframework
    input text      css = #kw    robotframework
    wait until page contains element    css = #kw   5   can't find element      #關鍵字 元素 等待時長 錯誤提示 類似於selenium中的顯示等待
#   click element   id=                                         #點擊元素
    click button    id=su                                       #點擊按鈕
#    select from list by value                                  #下拉框選擇
#    execute javascript      js語句                               #執行js語句
#    Close Browser                                               #關閉當前瀏覽器
#   Close All Browser                                           #關閉所有瀏覽器
case10
    open browser    https://mail.163.com/
    sleep   2
    select frame        xpath=                      #進入表單
    unselect frame                                  #退出表單
復制代碼
  • Should Be Equal
  • Should Be ...
  • Should Be True
    1. 字符串時  should be true'${str}'=='str'
    2. 數字  should be true  ${value}==value
  • convert to interger 轉換為整數

  • convert to Number 轉換為浮點數

  • ${33} 直接傳數字

五、各個級別的set up

  suite setup/teardown:在suit套件中只執行一次

  test setup/teardown:每個case執行前都會執行一次

  [setup/teardown]:屬於case級別,每個case執行前都會執行一次,當同時存在test setup/teardown和[setup/teardown]時,執行[setup/teardown];

  

六、關鍵字驅動示例

復制代碼
*** Settings ***
Library     Selenium2Library

Test Setup    open browser    ${url}
Test Teardown      close browser

*** Variables ***
${url}      http://xxxxx
${correct_acc}      admin
${correct_pwd}      admin

*** Keywords ***
login_failed
    [Arguments]     ${account}      ${password}
#    open browser    ${url}
    input text      id=id_username      ${account}
    input text      id=id_password      ${password}
    click button    id=login_submit
    sleep   2
    ${result}       get text    xpath=.//*[@id='content']/div
    should contain      ${result}    Invalid Username or Password, please try again.
*** Test Cases ***
#casename                      username                pwd
case1:pwd_error
    [Documentation]            passworderror
    login_failed               ${correct_acc}          123
case2:acc_error
    login_failed               123                     ${correct_pwd}
case3:pwd_acc_error
    login_failed               123                     123
case4:pwd_emty
    login_failed               ${correct_acc}          ${empty}
case5:acc_emty
    login_failed               ${empty}                ${correct_pwd}
case6:acc__pwd_emty
    login_failed               ${empty}                ${empty}
復制代碼


免責聲明!

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



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