robot framework


參考網站

  • http://robotframework-userguide-cn.readthedocs.io/zh_CN/latest/ExtendingRobotFramework/CreatingTestLibraries.html
  • https://github.com/robotframework
  • http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html
  • wxpython 2.8.12--https://sourceforge.net/projects/wxpython/files/wxPython/2.8.12.1/
  • http://robotframework.org/Selenium2Library/Selenium2Library-1.8.0.html

概念-什么是自動化測試框架

  1. 自動化測試框架能干什么
  • 每次寫好的自動化的腳本的組織
  • 有選擇的執行腳本,不需要人手動執行
  • 每個檢查點是否通過的檢查
  • 通用的功能進行組織到模塊中,供其它模塊的使用
  • 執行的結果輸出報告形式
  1. 測試框架還能解決的問題
  • 自動測試用例的實現方式
  • 自動測試用例的開發支持--IDE&&庫
  • 和用例管理系統的集成
  • 測試執行
    1. 相關測試套件(suite)和測試用例的執行原則,可以支持隨意選擇其中的測試用例的執行
    1. 初始化和清除:執行測試條件的預置條件,這一步對於程序來說非常重要
    1. 測試報告

RF功能和特點

1.測試人員開發測試數據文件(Test Data)對應一個個測試用例

  1. 測試數據文件里面使用的功能小模塊叫關鍵字,由測試庫(Test Library)實現
  2. robot framework加載測試庫,並解釋執行Test Data也就是測試用例,測試庫一般需要自己開發
  3. 他提供簡單易懂的表達式的“語言”來開發自動測試用例
  4. 用關鍵字(keyword)的形式來開發測試用例
  • 標准庫提供了常用的功能
  • 第三方拓展庫
  • 開發者根據產品自行開發庫
  1. 定義了靈活且易理解的測試用例執行控制(包括初始化和清楚環境)
  2. 有清晰的體制和報表功能,可以清楚的查看測試執行結果
  3. 開發人員划分
  • 自動化框架、庫開發者
  • 自動化用例開發者

RF安裝

  1. RF的安裝
  • pip install robotframework - i https://pypi.douban.com/simple/
  1. RIDE的安裝 -- 不是必須的工具,可視化的編輯工具
  • 一個簡單的IDE
  • pip install robotframework-ride - i https://pypi.douban.com/simple/
  • wxpython的安裝--RIDE依賴wxpython圖像庫最好用2.8.12.1,以上的版本不支持
  1. selenium2library的安裝-- web自動化
  • 支持slelenium的自動化的rf擴展庫
    4.上面的步驟做完后,使用win+r,輸入ride.py,不能執行的時候需要關聯python
  • pip install robotframework-selenium2library

    pycharm 的插件intellibot 的安裝

  • browse respositities 選擇下載或者直接選擇第三個按鈕
  • intellibot 包下載地址:https://www.intellibotrobotics.com/

實戰

實戰1--使用RIDE圖形化--官網文檔地址:http://robotframework.org/Selenium2Library/Selenium2Library.html

  1. 設置RIDE
  • 先自己創建一個文件,使用file-open dictory,選擇創建的目錄
  • 自動識別library的關鍵字,做法:RIDE工具中修改tools-preference --defaulte file fotmat修改為 robot
  • RIDE里面加入selenium2library的方法
    1. tools-->preference-->importing-->auto imports選擇selenium2library的名字和地址
    1. 把webdriver的地址加到系統環境變量中,不包含exe的目錄,修改好之后重新打開控制台,輸入ride.py
    1. 右擊->new suit ->file取名字--創建的是測試套件文件 or 選擇目錄,目錄中可以包含測試套件的子目錄和子套件文件,當文件有*表示沒有保存
    1. 右擊->new test case
    1. 使用edit,表格填寫的方式,函數不是內置的需要申明,是內置的不需要申明
    1. 申明selenium2library:第一行輸入ImportLi +(技巧)CTRL+ALTE+空格 自動搜索和補齊空格
    1. 設置庫的名字:import library +selenium2library
    1. 設置訪問地址:Open Browser +網址+瀏覽器
    1. 設置等待時間:Set Selenium Implicit Wait +5
    1. Import Text +id='kw'+ 搜索文本內容
    1. css查找,${firstRet}+Get Text+文本內容--意思是設置文本內容的變量為${firstRet}
    1. Should Contain +變量1-${firstRet}+變量2- 說明:變量1是否包含變量2的內容,should打頭是檢查點
    1. 執行-方法
  • 方法1:勾選case,點擊白色的運行符號,點擊log,顯示測試的結果;點擊report,展示測試報告,出現錯誤時,直接在瀏覽器中打開Log和report的鏈接
  • 方法2:點擊run

套件和用例的結構

套件的概念

  • 測試套件是測試用例的集合
  • 功能相近的測試套件有可以組成更大的套件
  • 樹形結構,類似於文件的格式

     

    `
    *** Settings ***
    Library Selenium2Library

*** Test Cases ***
測試1
Open Browser http://www.114time.com/ chrome
Set Selenium Implicit Wait 4
${date}= Get Text css=.date > b.year
log to console ${date}
Should Be Equal ${date} 2017
Close Browser

測試2
${var1} convert to integer 100
${var2} set variable 5
should be true $var1 * int($var2) == 500
`

套件(數據文件)文件的表

1. RF支持四種的表
  • 分別為Settings,Variable,Test Case,Keywords
  • 表名必須出現在第一單元中,表名大小寫不敏感
  1. Settings表,是這個測試套件的全局配置表,比如這個測試套件要使用的測試庫,資源文件,測試套件的環境初始化(setup)和清除(tear down),該套件內的標簽等等
    *** Settings *** --大小寫不敏感

  2. Test Case--用例的名字放在最前面
  3. 測試用例表里面的每個測試用例,大概可以分為
  • 配置部分
  • 主體部分

  • 1. 用例配置部分

  • [Documentation]--用例的文字說明
  • [Tags]-該用例的標簽
  • [Setuo],[Teardown]--用例初始化和清楚操作
  • [Template]--申明該模塊是模板關鍵字驅動,本用例值包含測試數據
  • [Timeup]--設置用例超時時間
  • 2.主體部分主要是由關鍵字組成

  • 關鍵字的來源:測試庫、資源文件、測試用例所在的文件的關鍵字表
  • 用例主體部分也包含變量賦值

4. Variable-測試套件中的全局變量表

  • ${javahome}

5. Keywords用來定義測試套件中的關鍵字

RF關鍵字的寫法

  1. 技巧:should be true 的用法和eval,should be true中的變能量的寫法,直接是$+變量名

認識測試庫

  1. 通常,關鍵字是由測試庫提供的
  2. 測試庫就是python 文件
  3. python 測試庫里面的關鍵字的實現方式
  • 類的方法
  • 函數
  • RF 腳本使用函數名、方法名
  1. rf 如何發現路徑
  • 和python 程序一樣,sys.path

庫的導入

  1. 除了builtin
  2. 一種是在settings表中進行導入 :library abc
  3. 一種是在測試用例中使用import library
  4. 庫導入的時候可以有參數,可以查看官方文檔,指導每次的導入的參數的意思

rf中的變量

1. rf中的變量,就是Python中的變量
  • 它指向一個python對象

    2. rf變量對應的是什么python對象,他就是什么類型的對象
    3. rf中,對變量的不同的用法
  • Scalar 方式
    1. ${var}-直接把變量所對應的python 對象傳遞給關鍵字對應的函數
  • list 方式
    1. @{var} 展開list中的每個元素,作為多個參數傳入
  • dictionary 方式
    1. &{var} 展開dict中的每個元素,作為多個參數傳入

      4. 訪問環境變量 %{env_var}

collection 標准庫

  1. 針對List和diction 的處理
  2. 創建並添加元素
  3. 數字變量${1},${2}

dialogs庫

  • 關鍵字get value from user 彈出一個對話框,得到鍵盤輸入的數字

循環

  • :For (inRange) +條件\ 直接是冒號+for

條件判斷、初始化和清除

  1. run keyword if 關鍵字做條件判斷
  2. 自動換行設置--Python中使用反斜杠進行換行 例如:\win;rf中使用將整體換行,使用三個點‘...加+換行內容’
  3. run keyword unless--當條件不成立的時候,執行if下面的語句

Evalute

  1. ${var}=set variable ${890}等價於 ${var}=evalute ${890}
  2. 復雜的表達式 :${var} = evalute 'hello '*10

初始化和清除

  1. setup是測試一個用例(套件)前面要做的事情
  2. tearup是測試后要做的事情
  3. 清除和初始化操作,每次放在都可以不影響后面的測試
  4. 測試套件目錄,測試套件文件和測試用例都應該有自己的清除操作
  5. 所有的清除和初始化操作只能有一個關鍵字構成
6. 用例的setup和tearup
7. 套件中的setup和tearup
    1. 寫在測試套件文件的settings
    1. 兩種類型
  • Suite setup/tearup--進入和退出這個suite執行用例前后必須執行且分別執行一次
  • Test setup和tearup ---當suite本身沒有setup和tearup才執行
    1. 測試套件的setup/tearup
  • 在其init的初始化文件-init-.txt或者_init_.robot里面的settings表中
  • setup和tearup使用和上面的兩種類型中的方法相同

    遵循就近原則

關鍵字

  1. 用戶關鍵字解決重復性的代碼,把多個關鍵字組成一個'宏'關鍵字
  2. 定義好用戶關鍵字后,該測試套件中里面就可以使用該用戶關鍵,就和庫關鍵一樣

    3. 寫法
  • Keywords表中定義,通用,和測試用例表中定義一樣
  • 把代碼公共的部分提取出來,放進一個關鍵字中
  • 使用參數解決公共部分不同的,使用[arguments]來進行配置
  • [Arguments] 

    ${name} ${desc} ${displayidx}
  • [Return]表示有返回

    資源文件-python中庫的概念

共享變量和python測試庫

變量表中聲明變量

  • 首先我們要創建Variable表

    *** Variable 

    ${MgLoginUrl1} http://www.1234.com

    list變量----@{database} 127.0.0.1 3306
    -1. @{database}[0]--去除列表中第一個元素
    * Dict變量--&{user1} name=auto pw=123**
  • Variable中申明文件的地址,如果是在本問價的地址中,就直接寫地址,不在本文件的地址中是a\b,使用相對路徑查找
  • Variable中申明的文件在其他文件或者模塊中-----win+R 輸入set Pythonpath=‘要查找的文件路勁’
  • Variable中申明的文件在其他文件或者模塊中-----win+R 輸入robot -- Pythonpath ‘要查找的文件路勁’

Python拓展關鍵字

  1. Python模塊作為測試庫
  • 模塊文件名作為測試庫的名字
  • 比如Python模塊中叫Mylibrary,對應的Python文件就是Mylibrary.py,那么測試庫的名字就是Mylibrary
  • 定義在Python模塊文件中的函數,名稱前有**_**前綴的不會作為關鍵字

python 擴展庫的搜索規則

  1. 完全按照python的模塊和搜索規則來的
  • 如果在包內 pylib/login/rightpass.py
    Settings
    Library pylib.login.rightpass
  1. 在settings中聲明資源文件和變量文件
  • 路勁,目錄之間的分隔符,不用點.,而是用斜杠/
  1. 在settings中聲明測試庫:
  • 路勁,目錄之間的分隔符,可以用點.,也可以用斜杠/
  • 路徑分隔符,用點后面不加py,用斜杠后面加.py

項目目錄和執行參數

項目文件類型種類

  • 用例套件文件、目錄
  • RF資源文件
  • 測試庫
  • 變量文件

    當資源文件的位置變了的時候,可以從跟了目錄進行找

  • Select from list by label 關鍵字可以從下拉框中找元素
  • run key word 可以讓初始操作,有不一樣的方法

結構優化

  • 合並重復的初始化和清除操作
  • 去掉多余的管理員登陸操作
  • 合理充足目錄結構

    rf用例的執行

    rf的命令格式

  • robot [options] data_sourse
    1. options 是rf命令的選項,可以為空
    1. data_sourse是要執行的測試套件文件或者目錄的路徑。可以是絕對路徑,也可以是相對路徑,相對於當前shell的工作目錄
  • robot tests.robot
  • robot path/to/my_tests/
  • robot c:\robot\tests.robot
    1. 如果指定的是測試套件文件,則執行該文件中所有的測試用例
    1. 如果指定的是測試套件目錄,則遞歸執行該目錄下包含的所有的子目錄。,里面所有的測試套件文件里面的用例
    1. 可以指定多個要執行的測試套件文件、目錄,甚至用通配符有來表示多個測試,如下所示:
      *** robot my_tests.robot you_tests.robot -----直接把兩個測試文件連載一起
      *** robot --name Example Path/to/tests/pattern_*.robot
  • 多個測試數據的情況,本次測試的名字就是他們名字的相加
    *** robot my_tests & you_tests
  • 用--name選項來指定本次測試名字,像上次第二行所示
    *** robot --pythonpath .--name 回測測試 tc

    1. 根據名稱選擇測試用例
  • 可以通過--test--suite來指定執行哪些用例或者套件而且還支持通配符的方式
    例如:

    --test Example # 執行名為example的用例 

    --test mytest --test yourtest # 執行名為 mytest和yourtest 的用例
    --test Example* # 執行名字以example開頭的用例
    --suite mysuite # 執行名為mysuite 的套件

    1. 可以在自動化的用例后面加用例的編號,該編號和測試用例的編號相同

使用參數文件,執行測試用例

如果有的時候,參數太長,我們通可以使用參數文件,我們可以把所有的參數都放在參數文件中,比如:

--pythonpath . 

--name 回測測試 

--test tc001 

--test 
tc002 

--test *tc003 

tc 

命令robot -A filename

添加ROBOT_LIBRARY_SCOPE='GLOBAL'來使得不需要每次調用庫的時候,都實例化一次,執行class中的內容

should be true 的用法

    • 使用這個關鍵字的時候,語法符合python的語法
    • 變量${var},使用變量名用$var,去掉花括號,使用變量值用${var},保持不變
    • 庫名大小寫敏感,關鍵字不敏感
    • 庫的導入可以添加參數,在類的初始參數的方法中,比如:
    • 一般導入的庫都是由類來實現


免責聲明!

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



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