全面學習robotframework框架二:整體理解框架結構

weixin_33912445發表於2018-11-27
robotframework支援的檔案格式
HTML
TSV
Plain TEXT
reStructuredText

後文將以 Plain TEXT格式,以“空格”分割,以“.robot”為檔案字尾的方式來進行相關說明

robotframework目錄檔案結構

robotframework是以project為單位進行管理的
一個project可以包含多個Test Suite
一個Test Suite可以包含多個測試用例
一個Test Suite有四部分組成:Settings、Variables、Test Cases、Keywords

如何去執行這些指令碼:

1、執行整個專案所有用例,pybot 專案路徑,例如:

pybot D:\robot

2、執行某個suite用例,pybot suite路徑,例如:

pybot D:\robot\testsuit.txt

3、執行某個測試用例,pybot –測試用例名 in 該測試用例所在suite,例如

pybot --testcase1_login in D:\robot\testsuit.txt

4、將測試結果輸出到固定路徑,pybot –outputdir 報告路徑 用例路徑,例如:

pybot --ouputdir D:\ropot D:robot\testsuit.txt

5、執行某個tag的測試用例,pybot –include [tag name] [專案路徑],例如:

pybot --include nomal D:\robot
檢視報告檔案

用例執行完畢後會生成三個檔案分別是:log.html、output.xml、report.html


8052636-8e0b9dc53eedac97.png
報告截圖

output.xml:記錄的測試結果是XML檔案,根據特定的需要可以編寫指令碼讀取XML檔案並生成特定的測試報告
log.html:會記錄Robotframework執行的每一步操作,主要用於編寫測試指令碼的過程檢視
report,html:為測試報告,整理性的展示測試用例的執行情況

整理結構如下:

總體結果及關鍵字說明

*** Settings ***
Documentation           這個是當前Test Suite說明文字
Library                 當前Test Suite需要使用的庫
Resource                當前Test Suite需要載入使用的資源,可能是引數也可能是用例檔案
Metadata                定義後設資料
Variables               引用變數檔案
Suite Setup             Test Suite執行前的動作
Suite Teardown          Test Suite執行後的動作
Test Setup              Test Case執行前的動作
Test Teardown           Test Case執行後的動作
Force Tags              Test Suite下的所有測試用例都會被打上這個tag
Default Tags            Test Suite的用例如果沒有打上tag,就會用這個預設tag,如果打了tag,就會用自己的tag
Test Timeout            設定每一個測試用例的超時時間,只要超過這個時間就會失敗,並停止案例執行
...                     這是防止某些情況導致案例一直卡住不動,也不停止也不是失敗
Test Template           資料驅動模板(很有用的一個引數)


*** Variables ***
${SCALAR_VARS}          建立scalar引數
@{LIST_VARS}            建立list引數
&{DICT_VARS}            a=建立dictionary引數


*** Test Cases ***
Test_01
    [Documentation]     測試用例說明……
    [Template]          資料驅動模板,每條用例只有一個模板
    [Tags]              測試用例標籤
    [Setup]             測試用例執行前的動作
    [Teardown]          測試用例執行後的動作
    [Timeout]           測試用例的超時時間
    My Keyword One  

Test_02
    [Documentation]     。。。
    [Template]          。。。
    [Tags]              。。。
    [Setup]             。。。
    [Teardown]          。。。
    [Timeout]           。。。
    My Keyword Two


*** Keywords ***
My Keyword One
    [Documentation]     關鍵字描述
    [Arguments]         自定義引數設定
    [Return]            將返回值丟擲
    [Timeout]           關鍵字流程執行超時時間
    [Tags]              標籤
    [Teardown]          關鍵字流程結束動作
    log                 ${SCALAR_VARS}
    log Mang            @{LIST_VARS}
    log                 ${DICT_VARS}

My Keyword Two
    log                 ${SCALAR_VARS}
    log Mang            @{LIST_VARS}
    log                 ${DICT_VARS}

下面是幾個簡單的案例:
practice_setup_and_teardown.robot

*** Settings ***
Documentation     test
Suite Setup       suitestart
Suite Teardown    suitestop
Test Setup        testsetup
Test Teardown     teststop

*** Variables ***
${a}              hello world 1
${b}              hello world 2

*** Test Cases ***
testcase1
    [Documentation]    testcase1
    log    ${a}
testcase2
    log    ${b}

*** Keywords ***
suitestart
    Log    suitstart
suitestop
    Log    suitstop
testsetup
    Log    teststart
teststop
    Log    teststop


practice_scalar.robot

*** Settings ***
Documentation       RobotFramework指令碼的scalar標量練習
Force Tags          robot-3.0
Default Tags        owner-damao

*** Variables ***
# 建立scalar變數      
${NAME}             Robot Framework
${VERSION}=         3.0
${ROBOT}            ${NAME}  ${VERSION}
${NULL_VAR}         # 空字串被賦值給了${NULL_VAR}
${EXAMPLE}          This value is joined together with a space
...                 1122333333333333333333333333333333
${LONG_WORDS}       1111111111111111

# 建立列表變數

@{NAMES}        Matti       Teppo
@{NAMES2}       @{NAMES}    Seppo
@{NOTHING}
@{MANY}         one         two      three      four
...             five        six      seven

# 建立字典變數
&{USER 1}       name=Matti    address=xxx         phone=123
&{USER 2}       name=Teppo    address=yyy         phone=456
# &{MANY}         first=1       second=${2}         ${3}=thirds
&{EVEN MORE}    first=override      empty=
...             =empty        key\=here=value


*** Test Cases ***
測試列印scalar變數
    [Documentation]     列印scalar變數
    To Test Scalar


*** Keywords ***
[Documentation]     建立關鍵字
To Test Scalar
    [Documentation]     列印標量
    log  ${NAME}
    log  ${ROBOT}
    log  ${NULL_VAR}
    log  ${EXAMPLE}
    log  ${LONG_WORDS}
   

practice_List.robot

*** Settings ***
Documentation       RobotFramework指令碼"列表"引數的練習
Force Tags          robot-3.0
Default Tags        owner-damao

*** Variables ***
@{list_data}        1    2    3    4    5      
@{list_data2}       a    b    c    d    e    f    
...                 q    w    e                     # 列表元素太長時使用... 分割

*** Test Cases ***
test_01
    [Documentation]     列印列表資料
    Print List Variables

test_02
    [Documentation]     獲取列表的長度
    Get List Length

*** Keywords ***
Print List Variables
    [Documentation]     列印列表資料
    log Many    @{list_data}
    log     @{list_data}[2]
    log Many    @{list_data2}  # 列印列表元素需要使用到log Many
    log     @{list_data2}[3]

Get List Length
    [Documentation]     獲取列表的長度
    ${length}    BuiltIn.Get Length    ${list_data2}   # 在獲取列表的長度時需要注意使用${列表引數}
    log    ${length}

practice_dict.robot

*** Settings ***
Documentation       RobotFramework指令碼“字典”引數的練習
Force Tags          robot-3.0
Default Tags        owner-damao


*** Variables ***
&{dict_data}        a=b    e=w   y=1    asd=123
&{dict_data1}       a=1    b=2    c=3    d=4
...                 r=7    u=90

*** Keywords ***
Print Dictionary Data
    [Documentation]    列印字典資料
    log    ${dict_data}
    log    &{dict_data}[a]
    log Many   &{dict_data}[a]    &{dict_data1}[u]
    log    ${dict_data1}


*** Test Cases ***
Test_01
    [Documentation]    測試列印字典資料
    Print Dictionary Data


相關文章