Robot Framework http接口測試


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

例子

 

 

 

image.png


作者: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



免責聲明!

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



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