RF即robotframework,接口、web UI、app自動化都可以支持。文本形式編寫測試用例(填表格),不是python語言(使用RF要遵循它自己的語法)。
關鍵字:都是函數
一、RF的幾大概念
1、Settings:設置項,包括導入庫、導入變量,設置變量、設置setup、teardown等。
用法示例:
*** Settings ***
Library DateTime 導入DateTime庫
Resource keywords.robot 導入用戶自定義關鍵字集
Variavles name 導入變量文件
Test Setup/Test Teardown 設置測試用例的setup/teardown
Suite Setup/Suite Teardown 設置測試套件的setup/teardown
Force Tags/Default Tags 設置標簽
Test Timeout 設置測試用例運行超時時間
Documentation 添加說明
2、Library :庫,提供了一系列關鍵字
3、KeyWords :關鍵字,即提供特定功能的函數。包括系統關鍵字和用戶關鍵字
用法示例:
*** Keywords ***
keyword_name
keyword body
......
4、Resource :資源,用戶關鍵字集合,用於管理用戶關鍵字,一般用戶自定義關鍵字都寫在資源文件中
5、Variables :RF語法中的變量,單變量值和列表
6、TestCases/TestSuite :測試用例/測試套件
用法示例:
*** Test Cases ***
測試用例1
測試用例2
……
二、RF Variable:變量
1、變量類型:
1)純值變量(只有一個值):${變量名}
==> 表示一個數據。作為參數傳遞,表示一個參數。
2)list變量:@{變量名}
==> 表示一組數據。作為參數傳遞時,有幾個數據就是幾個參數。
3)dict變量:&{變量名}
==> 表示一組鍵值對數據。作為參數傳遞時,有幾個鍵值對就是幾個參數。
注意⚠️:關於變量聲明,由於RF底層時python實現的,所以RF與python創建變量類似,變量不需要特定聲明,只要有初始化賦值即可使用,默認情況下RF里的變量都是字符類型的。
2、變量賦值:
1)直接賦值:a = 1
2)函數的返回值
3、變量的取值:
4、變量的定義與作用域:
1)局部變量
2)全局變量
3)變量文件
示例1:設置局部變量為套件級別的變量 Set Suite Variable
示例2:定義當前套件全局有效的變量 ***Variable***
示例3:在變量文件中定義,然后引用變量文件中定義的變量,此處的變量文件指的是.py文件
三、RF語法與測試用例編寫
在RF中,做任何事都是通過調用關鍵字來完成的,當然書寫測試用例也是通過調用關鍵字來實現的。
那么RF的關鍵字從哪來呢?
==> 1)內置關鍵字:直接調用/先引入再調用
==> 2)第三方關鍵字:先安裝-再引入-再調用
==> 3)自定義關鍵字:使用python語言實現
以上三種關鍵字可以統稱為“系統關鍵字”
==> 4)用戶關鍵字:不是通過代碼實現的,用RF的語法編寫的,主要用來表達業務,因此又叫業務關鍵字
⚠️ 使用eclipse創建項目時,項目名不要含有下划線,會自動替換為空格
斷言關鍵字,基本上都在標准庫-BuiltIn中
⚠️ RF中關鍵字的參數都是字符串,是不能執行的,顧不能像python語句一樣,將關鍵字調用作為另一個關鍵字的參數
定義用戶關鍵字示例:
保存后,將鼠標移至關鍵字名稱上,可見關鍵字信息(來源、參數、說明等信息)
⚠️ 關鍵字在RF中是不能單獨執行的!
在測試用例中調用定義的用戶關鍵字:
==> 用戶關鍵字一般不在測試套件文件中定義,而是存放在資源文件中。
與測套件文件的區別:
資源文件的引入:
調用資源文件中的用戶關鍵字:
異常處理:
一旦拋出異常,返回False,沒有發現異常,返回True
==> 關鍵字:Run Keyword And Return Status
如果關鍵字運行成功並無異常,返回True;如果關鍵字運行有報錯,則返回False
四、RF 用於Web UI自動化
SeleniumLibrary庫:
PO模式示例:
RF-命令行參數
用例運行設置-重運行/參數化/用例的自動化收集/用例篩選 參考pytest的命令行參數的形式
robot命令
1)自動化收集用例:robot 項目目錄 -- 在給定的項目目錄下開始收集用例
2)識別機制:套件/測試套件/*** Test Cases ***
3)輸出文件存放:默認存放在命令運行的目錄,如上圖為C盤Users/yxj,則會生成在此目錄下,可能會出現權限不夠的問題,顧一般先切換至項目所在路徑下,再執行運行命令
4)用例篩選:
1⃣️ 打標簽名
2⃣️ -i 標簽名 運行參數設置 如:robot E:\rf\WebUITest -i smoke
==> 單用例打標簽:
==> 整個套件下的用例都打標簽:在settings中
5)重運行機制:等到所有測試用例執行完成后,會生成output.xml文件,然后根據文件,獲取其中失敗的用例,然后重運行這些用例,不能指定重運行的次數
1⃣️ 先運行一次用例:robot 項目目錄
2⃣️ 再運行一次失敗用例:robot -R 步驟1中生成的output.xml路徑
3⃣️ 重運行第二次:robot -R 步驟2中生成的output.xml路徑
6)指定文件輸出的路徑:robot -d 目錄
7)設置運行時變量(獲取外部傳參):命令行的形式,獲取命令行設置的變量 robot -v name:value 項目目錄
五、RF 接口自動化
1、安裝
2、關鍵字:RequestsLibrary庫的關鍵字可以分為一下三類
1)與服務端的會話
2)請求類型
3)響應結果轉json
3、接口測試用例示例:略
4、RF實現數據驅動:通過將關鍵字設置為模板來實現
六、自定義RF擴展庫
思考:通過類來實現還是函數來實現?
⚠️ 自定義三方庫的存放路徑中最好不要含有中文(python3支持中文,但python2不支持)
1)庫名、模塊名、類名三者保持一致,這樣在robot中導入時,就可以直接導入庫名,避免一些路徑上的問題
2)實現關鍵字的時候:類 或 .py中的函數
3)ROBOT_LIBRARY_VERSION = 1.0
ROBOT_LIBRARY_SCOPE= ‘GLOBAl’ 在運行過程中,示例對象的作用域,因為會在多個文件中引入,當scope為global時,只創建一個實例,全局有效
4)初始化函數__init__()一旦有參數,必須帶有默認值
5)文檔說明:”””文檔內容”””
6)日志融合:引入robot的日志庫,from robot.api import logger
7)自己寫的三方庫,需要經過測試,即單元測試