【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
- 字符串時 should be true'${str}'=='str'
- 數字 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}