https://blog.csdn.net/yin20100522/article/details/107415398
https://www.jianshu.com/p/c3a9d20db4e5
變量標識符 { }
Robot Framework的變量分為標量, 列表和字典, 分別使用語法格式 ${SCALAR}
, @{LIST}
和 &{DICT}
來定義。
標量(Scalar)變量是指用${}標識的變量。
用例腳本中關鍵字之間使用4個空格進行間隔。
${name} Set Variable robotframework
]
嵌套字典
典變量用&{}標識,使用Create Dictionary來創建一個字典
&{dict3} Create Dictionary name=李四 age=30
先要安裝requests,再安裝requestsLibrary
使用空格分隔時, 空格的數量是不定的, 最少需要2個, 可以盡量將數據對齊的更好看點. 當使用文本編輯器時, 這點相對TSV格式來說是一大優勢, 因為TSV的對齊沒法控制.
關鍵字和參數之間推薦使用4個空格隔開.
robot變量類型;
數值是通過${數值}來表示的,其中的數值可以是整形也可以是浮點型; 元組的表示${數值1,數值2,...}; 列表的定義@{列表名稱};
數字變量
如下面例子中所示,變量語法能用來創建 整型 和 浮點型 數據。當一個關鍵字需要 真實的數字而非對應的數字字符串作為參數時,這種創建數字變量的方法是很有用的。
*** Test Cases ***
Example 1A
Connect example.com 80 # Connect 獲得兩個字符串作為參數Example 1B
Connect example.com ${80} # Connect 獲得一個字符串和一個整數作為參數Example 2
Do X ${3.14} ${‐1e‐4} # Do X 獲得浮點數 3.14 和 ‐0.0001 作為參數
————————————————
原文鏈接:https://blog.csdn.net/hxiongge/article/details/109240899
發送和接受json:
*** Test Cases *** testcaseJson ${headers} Create Dictionary Content-Type=application/json;charset=UTF-8 Create Session httpbin ${HOST} &{body} Create Dictionary aa=3 ${resp} Post On Session httpbin /path headers=${headers} json=${body} 注意這里是json不是data. log ${resp} ${json} Set Variable ${resp.json()} log ${json} Log to console ${json}
可以用requests請求,也可以用Requestlibrary請求(前提一定要安裝requests)

http請求的7種方法
get post delete head options patch put
RequestsLibrary關鍵字
關鍵字 | 備注&參數 |
---|---|
Create Session | 創建一個HTTP會話:alias, url, headers={}, cookies=None, auth=None, timeout=None, proxies=None, verify=False。 url:即服務器的url。 alias:使用Robot Framework的別名表示當前會話。 header:使用默認的headers字段。 auth:NTLM鑒權需用username&password格式。 timeout:會話超時時長。 proxies:代理服務器的url。 verify:如果需要證書請求則置為true |
Delete All Sessions | 刪除全部的會話 |
Delete Request | alias, uri, data=(), headers=None, allow_redirects=None |
Get Request | 根據提供的別名查找會話並在會話中發送GET請求 alias, uri, headers=None, params={}, allow_redirects=None |
Post Request | 根據提供的別名查找會話並在會話中發送POST請求 alias, uri, data={}, headers=None, files={}, allow_redirects=None |
To Json | 將文本轉換成json對象 content pretty_print |
例子

作者:heyzql
鏈接:https://www.jianshu.com/p/ea94fea6f37c
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
pip install requests
pip install robotframework-requests
Keyword 'RequestsLibrary.Get Request' is deprecated. Please use `GET On Session` instead.
關鍵字介紹:
1)Create Session:創建一個與服務器的會話
參數說明:
alias:別名。作為當前會話的標識符。
url:服務器地址。基本地址,而不是接口的地址。
2)Post Request:發送一個post請求,並返回一個響應對象。
參數說明:
alias:選擇一個會話的別名。來自於 Create Session 關鍵字。
url:接口地址。不包含服務器地址。
data:post請求體數據。
返回值:response 對象(requests 庫的 response 對象)
注意:post請求一定要添加消息頭,否則會發送請求失敗。
3)Get Request:發送一個get請求,並返回一個響應對象。
參數說明:
alias:選擇一個會話的別名。來自於 Create Session 關鍵字。
url:接口地址。不包含服務器地址。
data:post請求體數據。
返回值:response 對象(requests 庫的 response 對象)
Response 對象,就是 python request 中的 Response 類。該類有什么方法這里就可以使用什么方法。
stauts_code:當前 http 通信的狀態碼
text:響應數據的響應數據部分 - 字符串
json():轉換成 json 對象。
headers:消息頭對象
*** Settings *** Library RequestsLibrary Suite Setup Create Session register http://xxx.xx.xx.xxx:8080 *** Varibales *** &{data1} mobilephone=13744441100 pwd=1234567890 &{data2} mobilephone=13744441100 pwd=${EMPTY} ${url} XXXxxx/xxxxxx/xxxxxx/register *** Test Cases *** 注冊-get &{req_data} Create Dictionary mobilephone=13744441100 pwd=1234567890 &{resp} Get Request register ${url} params=&{req_data} Log ${resp.status_code} Log ${resp.text} Log ${resp.json()} 注冊-post &{req_data} Create Dictionary mobilephone=13744441100 pwd=1234567890 &{header} Create Dictionary Content-Type=application/x-www-form-urlencoded &{resp} Post Request register ${url} &{req_data} headers=${header} Log ${resp.status_code} Log ${resp.text} Log ${resp.json()}
變量作用域
通常情況下,每個變量默認都是局部變量,但如果想讓這個變量在各個用例中都可以使用,就需要賦值在Variables里面
變量賦值位置 | 作用域 |
---|---|
測試用例 | 在這個測試用例內部 |
Variables | 測試用例集(該文件所有用例均可使用) |
*** Variables *** ${hh} 121 @{list} 12 13 43 2 *** Test Cases *** 用例4-獲取列表第二位置的值 Log ${list[1]} 用例5-RF變量 Log ${hh} Log ${list[2]}
外部變量.py文件 data1 = "hello,RF" LIST__strings = ["one", "two", "three", "four", "five"] DICT__person_info = {"name":"xiao", "sex":"女", "hobby":"sleep"} 測試用例集.robot文件 *** Settings *** Variables 外部變量.py *** Test Cases *** 用例6-從變量文件中讀取變量 Log ${data1} Log ${strings[0]} Log ${person_info.sex} ———————————————— 版權聲明:本文為CSDN博主「萌萌噠小寶寶」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。 原文鏈接:https://blog.csdn.net/qq_38889350/article/details/109770071
資源文件
這一概念了:
資源文件
其實就是RF層面的庫文件(不能包含測試用例表),里面的內容為共享的變量和關鍵字
導入資源文件
新建一個 common.robot
文件
common.robot
*** Settings *** Library SeleniumLibrary *** Keywords *** 登錄網易郵箱 # 打開chrome瀏覽器訪問163郵箱 open browser https://mail.163.com/ chrome sleep 5 maximize browser window # 切換到iframe select frame xpath=//iframe[contains(@id,'iframe')] # 用戶名輸入框中輸入 用戶名 sleep 2 input text xpath=//*[@name="email"] 你的用戶名 sleep 2 # 密碼輸入框中輸入 密碼 input text xpath=//*[@name="password"] 你的密碼 sleep 2 # 點擊登錄按鈕 click element xpath=//*[@id="dologin"] sleep 10 關閉瀏覽器 close browser
通過在測試用例文件的Settings
表中Resource common.robot
導入資源文件,即可使用 資源文件
里共享的變量和關鍵字
的內容
*** Settings *** Library SeleniumLibrary Resource common.robot *** Test Cases *** 網易郵箱2 登錄網易郵箱 log to console 這里是用例主體部分 關閉瀏覽器
用log to console 可以直接控制台打印
在大多數時候,登錄會變成測試套件的用例前置的內容,關閉瀏覽器是用例后置的內容,所以,通常在測試套件中,會這樣來寫
test.robot
*** Settings ***
Library SeleniumLibrary
Resource common.robot
Suite Setup 登錄網易郵箱
Suite Teardown 關閉瀏覽器
*** Test Cases ***
用例1
log to console 這里是用例主體部分
用例2
log to console 這里是用例主體部分
使用 套件級別的 Suite Setup,將登錄網易郵箱關鍵字作為前置內容,將關閉瀏覽器關鍵字作為后置內容,執行用例1和用例2前就已執行登錄操作,用例1和用例2執行結束,關閉瀏覽器
資源文件的作用是對用戶關鍵字進行管理,將重復的內容提取出來,簡化測試用例中的操作步驟
原文鏈接:https://blog.csdn.net/qq_44614026/article/details/115450095
首先需要聲明使用Library: *** Settings *** Library RequestsLibrary 接下來定義訪問的地址: *** Variables *** ${HOST} http://localhost/myapi 然后就可以寫用例了: *** Test Cases *** API Test Example Create Session my_session ${HOST} ${headers}= Create Dictionary Accept=application/json Content-Type=application/json charset=utf-8 # POST request with params ${data}= Create dictionary field1=value1 field2=value2 ${response}= Post Request my_session my-endpoint headers=${headers} data=${data} Should be equal as strings ${response.status_code} 200 Log ${response} 這里使用的是POST方法,向api發送的鍵值對定義在data中,這里使用了創建鍵值對字典的關鍵字Create Dictionary。返回的對象定義在變量${response}中,使用Post Request可以執行訪問。 數據庫相關測試
8.Should Be Equal As Integers與Should not Be Equal As Integers
轉化成字符串類型在對比
原文鏈接:https://blog.csdn.net/saber_sss/article/details/110558840
https://blog.csdn.net/be5yond/article/details/54754954
簡單測試腳本
*** Settings *** Documentation Example using the space separated format. Library OperatingSystem *** Variables *** ${MESSAGE} Hello, world! *** Test Cases *** My Test [Documentation] Example test. Log ${MESSAGE} My Keyword ${CURDIR} Another Test Should Be Equal ${MESSAGE} Hello, world! *** Keywords *** My Keyword [Arguments] ${path} Directory Should Exist ${path}
自定義關鍵字
使用Robotframework對Api接口進行測試,每次測試都需要先登錄,為了減少重復的登錄腳本,使用Robotframework自定義關鍵字簡化登錄過程的腳本。代碼如下:
*** Keywords *** 登錄到平台
[Arguments] ${host} ${username} ${password} Create Session my_session ${host} ${data}= Create dictionary UserName=${username} Password=${password} ${response}= POST On Session my_session url=/api/Account/Login json=${data} Log ${response} [Return] my_session
為了方便使用,我們使用中文作為關鍵字的名稱。然后定義三個輸入變量,${host}是需要登錄的網址,${username}和${password}是用戶名和密碼。使用POST On Session實現登錄,登錄后返回登錄過程創建的會話。這個關鍵字可以在測試用例中使用,比如:
*** Test Cases *** TestLogin ${mysession}= 登錄到平台 host=${HOST} username=saleuser1 password=1 ${datalist}= Create dictionary WorkFlow_Name=LeaveApply1 ${responselist}= POST On Session ${mysession} url=${GetActivateListUrl} json=${datalist} Log ${responselist}
我們可以將自定義的關鍵字保存在資源文件中,便於在多個測試用例中共用。資源文件的結構與測試文件基本相同,只是沒有測試用例,變量和自定義關鍵字部分完全相同。在測試文件的設置部分引用資源文件,比如:
*** Settings ***
Library RequestsLibrary
Resource ../../Resources/flowresources.robot
資源文件的位置相對於當前路徑,路徑中也可以包含變量,比如${RESOURCES}/common.tsv。
如果多個資源文件中包含相同的自定義關鍵字,在使用這些關鍵字時,需要使用資源文件名作為前綴。如果多個資源文件中包含相同的變量,那么先加載的變量起作用。
很多情況下,我們需要自定義關鍵字可以接收多個參數,且參數的個數不確定,這種情況下,可以將參數聲明為列表,使用@修飾符,示例代碼如下:
MultiArguments
[Arguments] ${par1} @{dic}
Log ${par1}
FOR ${v} IN @{dic}
Log ${v}
END
在上面的例子中${par1}是固定參數,后面的@{dic}是可變參數列表,在自定義關鍵字中采用循環處理列表中的參數。調用的示例如下:
MultiArgumetns para1 u1 u2 u3 u4
為Robotframework開發自定義庫
Robotframework基於Python開發,我們使用Python開發自定義庫,對Robotframework提供擴展。開發和使用都非常簡單,由於python是解釋語言,自定義庫不需要編譯部署等等步驟,使用任何文本編輯器都可以實現。這里通過實現一個簡單的需求說明創建和使用過程。需求很簡單,需要從一個字符串中獲取flowid=后面的值。
首先我們創建一個python文件,代碼如下:
def get_flow_id(url): idx = url.index('flowid=')+7 le = len(url) flow_id = url[idx:le] return flow_id
然后就可以在robot文件中引用這個庫了,在Settings中增加:
*** Settings ***
Library ../pylibs/getflowid.py
這里庫的位置相對於當前文件的位置。
在測試用例或者關鍵字中就可以使用自定義庫中定義的新關鍵字了,這里get_flow_id對應的新關鍵字是Get Flow Id,"_"符號被空格替換,並且后面的字符變為大寫。下面是使用的示例:
${fid} Get Flow Id ${rurl}
參考
接:https://www.cnblogs.com/zhenl/p/15786035.html