使用者關鍵字$資原始檔@匯入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}