RF02 控制流語法——IF和For語句語法


目錄

一、RF控制流—if判斷

        RF中,IF語句是用 Run Keyword If 來代替的

1.1 語法

Run KeyWord If 判斷條件 其他關鍵字
... ELSE IF 判斷條件 其他關鍵字
... 
... ELSE 判斷條件 其他關鍵字

        如果給出的條件滿足,就執行給出的關鍵字

1.2 案例

1.2.1 案例1

*** Test Cases ***
...

# 如果要運行的關鍵字有返回值,在控制流語句前面接收
${用戶余額} Run KeyWord	If ${res}==1 用戶信息頁面-獲取用戶余額

1.2.2 案例1

*** Settings ***
Force Tags    new

*** Test Cases ***
數字比較
    @{list1}    BuiltIn.Create List    0    10    5
    BuiltIn.Run Keyword If    ${list1[0]}>${list1[1]}    BuiltIn.Log    我贏了        
    ...    ELSE    BuiltIn.Log    我輸了

字符比較
    # 字符比較都需要加上雙引號或者單引號
    &{dict1}    BuiltIn.Create Dictionary    str1=happy    str2=unhappy
    BuiltIn.Run Keyword If    "${dict1.str1}"=="happy"    BuiltIn.Log    I am happy!
    
布爾值比較
    # 布爾值比較都需要加上雙引號或者單引號
    # 注意返回值為None的情況
    # 在rf中,布爾值首字母是大寫:True、False
    
    ${var1}    BuiltIn.Set Variable    true
    ${res}    BuiltIn.Run Keyword If    "${var1}"=="false"    BuiltIn.Log    pass      
    BuiltIn.Log    ${res}
    
    BuiltIn.Comment    返回值為None的情況
    
    ${value}    BuiltIn.Set Variable    hello
    ${value}    BuiltIn.Set Variable If    "true"=="false"    hao    ${value}          
    
    # 在rf中,如果關鍵字沒有設置返回值,那么就會返回None,如果有返回值,所以上面語句中,
    # 最后加了一個${value}作為BuiltIn.Set Variable If關鍵字條件不滿足時的返回值,二
    # BuiltIn.Set Variable If的語法為,條件滿足返回第一個值,不滿足返回第二個值        

1.3 IF關鍵字使用案例講解

        實際項目中,可能需要在不同的測試環境(SIT環境、UAT環境以及生產環境)中跑自動化測試腳本。不同 測試環境所需要准備的測試數據可能不一樣,所以要做到測試數據的分離。在rf命令行啟動過程中,可以通過-v傳入全局的參數,可以在用例中在用例執行前判斷傳入的參數的值,再根據這個值導入不同的資源文件

*** Test Cases ***
BuiltIn.Run Keyword If    "${env}"=="SIT"	BuiltIn.Import Resource		SIT環境測試數據存儲資源文件路徑
...		ELSE IF		"${env}"=="SIT"		BuiltIn.Import Resource		UAT環境測試數據存儲資源文件路徑
...		ELSE IF 	BuiltIn.Import Resource		UAT環境測試數據存儲資源文件路徑

二、RF控制流—For循環

2.1 單層for循環

2.1.1 語法

第一種語法:

:For 變量 IN 序列(or 列表)
	關鍵字 參數值
	Exit for loop if 判斷條件

第二種語法:

:For 變量 IN RANGE 循環限量
	關鍵字 參數值
	Exit for loop if 判斷條件

2.1.2 案例

*** Settings ***
Force Tags    A

*** Test Cases ***
從列表或序列中循環取值
    [Documentation]    從列表中循環取值
    # For IN    從序列或者列表中取值
    BuiltIn.Log    start    
    @{myList}    BuiltIn.Create List    hello    world    hey
    
    BuiltIn.Comment    \表示該for循環的作用域,表示語句是for循環的內容
    :FOR    ${item}    IN    @{myList}
    \    BuiltIn.Log    ${item}
    \    # 滿足條件的情況下,退出循環
    \    BuiltIn.Exit For Loop If    "${item}"=="world"    

在一個范圍內循環取值
    [Tags]    smoke
    BuiltIn.Log    只有一個參數,參數為終止值。默認其實為0,默認為+1   
    :FOR    ${index}    IN RANGE    5
    \    BuiltIn.Log    ${index}
    
    
    # 設置起始值 
    BuiltIn.Log    設置起始值。第一個參數為起始值,第二個參數為結束值。默認+1
    :FOR    ${index}    IN RANGE    10    15
    \    BuiltIn.Log    ${index}    
   
    BuiltIn.Log    設置步長。第一個參數為起始值,第二個參數為結束值,第三個參數為步長
    :FOR    ${index}    IN RANGE    10    20    2
    \    BuiltIn.Log    ${index}

2.2 雙層for循環

        rf中不支持直接嵌套for循環,如果想要嵌套for循環,需要把內層for循環寫成關鍵字,for寫到外面

2.2.1 語法

外層循環:

:For 變量 IN 序列(or 列表)
	內層循環關鍵字 參數值

內層循環關鍵字:

:For 變量 IN RANGE 循環限量
	關鍵字 參數值

2.2.2 案例

外層for循環:

*** Settings ***
Force Tags    A
Default Tags    test    tt
Resource    ../關鍵字/內層for循環關鍵字.robot

*** Test Cases ***
雙層for循環
    BuiltIn.Comment    rf中不支持直接嵌套for循環,如果想要嵌套for循環,需要把內層for循環寫成關鍵字,for寫到外面
    @{rows}    BuiltIn.Create List    row1    row2    row3    row4
    @{cells}    BuiltIn.Create List    cell1    cell2    cell3
    :FOR    ${row}    IN    @{rows}
    \    內層for循環關鍵字.內層for循環    ${row}    @{cells}

內層for循環關鍵字:

*** Settings ***
Library    BuiltIn    

*** Keywords ***
內層for循環
    [Arguments]    ${row}    @{cells}
    :FOR    ${cell}    IN    @{cells}
    \    BuiltIn.Log    ${cell}   


免責聲明!

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



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