1. 程式人生 > >使用者關鍵字$資原始檔@匯入robot檔案

使用者關鍵字$資原始檔@匯入robot檔案

什麼是使用者關鍵字
通常的從測試庫(也就是python檔案)裡面提供的關鍵字,我們叫庫關鍵字
還可以在RF檔案中實現關鍵字,這種關鍵字我們稱之為使用者關鍵字

  • 使用者關鍵字類似於RF層面的函式,把多個關鍵字操作組成一個“巨集”關鍵字

  • 定義好使用者關鍵字後,該測試套件裡面就可以使用該使用者關鍵字了,就像庫關鍵字一樣

使用者關鍵字是在使用者關鍵字表裡面的,就是rf層面的函式
Keywords 就是把你要封裝的步驟去一個名字,可以把整個用例封裝成一個使用者關鍵字,但是封裝的力度太大了,靈活性就太差了
可以把經常用的封裝成使用者關鍵字,哪些動作是常用的。不做特殊處理,只能作用在當前程式碼檔案
使用者關鍵字可以測試用例的檔案裡,也可以在資原始檔裡,用的時候匯入資原始檔

資原始檔
在測試套件檔案中定義的關鍵字問題
只能在本測試套件中有效,無法共享給其他測試套件使用
使用資原始檔
資原始檔其實就是RF層面的庫檔案

  • 裡面可以包含用來共享的變數和關鍵字

  • 資原始檔的格式基本也和測試套件檔案類似

     ***Settings***
     Library     Selenium2Library
     Resource    rc.robot    
    

#資原始檔的字尾名也是.robot RF中找資原始檔:1.先在用例所在檔案的目錄裡找。2.再到py的搜尋路徑裡面找。sys.path裡面找。儘量用相對路徑
搜尋規則

  • 當前用例檔案所在的目錄

  • 如果找不到就在Python得到模組搜尋路徑中搜索

~~自動化如下測試用例

用例:檢查新增課程功能
前置條件:系統中沒有課程,
步驟 1: 新增課程,輸入課程名、詳情描述、展示次序為2,點選建立
預期結果:建立的課程正確顯示在下面的表中。
步驟 2: 再新增一門課程,輸入課程名、詳情描述、展示次序為1,點選建立
預期結果:建立的課程正確顯示在下面的表中,並且按照展示次序排列。
這裡為了簡化,我們只檢查 課程名就可以了
要求:
將用例中的 登入、新增課程、檢查課程, 合理使用 資原始檔裡面的使用者關鍵字 實現
如果可以,將初始化、清除操作 也改為用 使用者關鍵字實現~~
RF測試套件檔案 t1.robot

*** Settings ***
Library    Selenium2Library
Resource    rc.robot            #匯入使用者關鍵字

Suite Setup  Setup WebTest
Suite Teardown  TearDown WebTest        #初始化清除。這裡測試用例少。通常放在__init__.robot的*** settings ***表裡面

*** Test Cases ***
測試1
    [Setup]  DeleteAllCourse        auto        sdfsdfsdf           #py裡面函式解決重複的程式碼,配置檔案解決重複的資料,把使用者名稱,密碼,寫在配置檔案裡面。就是一個.py檔案。在rf裡面定義在一個變量表的地方


    Login Web Site

    Add Course    初中數學    初中數學   1

    ${lessons}=  Get Course List

    Should Be True   $lessons==[u'初中數學']


    [Teardown]     DeleteAllCourse      auto        sdfsdfsdf



測試2
    [Setup]  DeleteAllCourse        auto        sdfsdfsdf


    Login Web Site

    Add Course    初中語文    初中語文   2

    ${lessons}=  Get Course List

    Should Be True   $lessons==[u'初中語文']


    [Teardown]     DeleteAllCourse      auto        sdfsdfsdf

RF資原始檔 rc.robot

*** Settings ***
Library    Selenium2Library
Library    Collections


*** Keywords ***

Setup WebTest           #初始化,開啟瀏覽器。剛開始執行
    Open Browser   http://localhost    chrome               #後面網址引數是一定要加的
    Set Selenium Implicit Wait   10

TearDown WebTest        #清除,關閉瀏覽器。結束執行
    Close Browser


DeleteAllCourse         #刪除課程    使用者關鍵字
    [Arguments]     ${username}     ${password}         #呼叫時候,要傳的引數

    Login Web Site  ${username}     ${password}     #登入誰的賬號

    Set Selenium Implicit Wait   2          #等價於driver.implicitly_wait(2)
    :For   ${one}  IN RANGE  99     #rf裡面沒有while迴圈,用很大的for來表示,for後面不能加冒號
       \   sleep  1
       \   ${deleteButtons}=  Get Webelements  css:button[ng-click^='delOne']     #根據css找到所有的刪除按鈕
       \   exit for loop if     $deleteButtons==[]          #如果後面的py表示式成立的話退出迴圈,py表示式就不需要加{}
       \   Click Element   @{deleteButtons}[0]            #取出列表的一個變數,點選
       \   Click Element   css=button.btn-primary          #刪除之後,要點選確定
       \    sleep  1
       Set Selenium Implicit Wait   10
       #CLOSE BROWSER                #關閉瀏覽器,這裡不需要關閉,都是在測試套件裡的最後teardown裡面


Login Web Site
    [Arguments]     ${username}     ${password}
    Go To     http://localhost/mgr/login/login.html          #訪問網址


    Input Text   id=username   auto
    Input Text   id=password   sdfsdfsdf
    Click Button    tag=button


Add Course
    [Arguments]     ${name}      ${desc}    ${displayidx}
    Click Element   css=button[ng-click^=showAddOne]

    input text      css=input[ng-model='addData.name']    ${name}
    input text      css=textarea[ng-model='addData.desc']    ${desc}
    input text      css=input[ng-model='addData.display_idx']    ${displayidx}

    Click Element   css=button[ng-click^=addOne]

    sleep  2


Get Course List

    ${lessons}=   Create List
    ${eles}=   get webelements  css=tr>td:nth-child(2)
    :FOR   ${ele}   IN   @{eles}
    \      Append To List   ${lessons}    ${ele.text}

    [Return]   ${lessons}