2016-12-22 21 views
2

我想要在變量文件中設置用戶名和密碼,並且通過每個用戶名的測試步驟,它會前進到下一行數據。機器人框架的數據驅動場景

我正在使用資源文件來驅動數據,並且我的初始FOR腳本處理用戶名1(eeny),然後嵌套的FOR循環一次傳遞所有密碼。

*** Variables *** 
@{users} eeny meeny miny moe 
@{pwds} pwd pwd1 pwd2 pwd3 

*** Test Cases *** 

Login Test 
    :FOR ${u} IN @{users} 
    \ Open Browser ${URL} 
    \ set window size 1440 900 
    \ set selenium speed .5 
    \ input text id=username ${u} 
    \ :FOR ${p} IN @{pwds} 
    \ \ input text id=password ${p} 
    \ \ click button css=button.primary 
    \ \ wait until page contains css=p.logout 
    \ \ capture page screenshot 
    \ \ click element css=p.logout 

目前我正在爲一個嵌套的語句,或者對於聲明中同時包含用戶名和密碼的變量,而不是反對改變戰術獲取數據,並使用一多維數組聲明或類似的,如果更好的工作。

回答

1

數據驅動測試可以通過'數據驅動通過測試模板'或從Excel或csv讀取數據來實現。

'通過測試模板驅動的數據'
在此我們將創建一個用戶定義的關鍵字,它不過是我們想要多次執行的函數或源代碼。 ,我們宣佈爲'Test Template'Settings部分。
當我們給TestCase名稱加參數時,它會每次執行Test Template
這裏的示例代碼

*** Settings *** 
Documentation  This Test Suite Deals with Data Driven Testing using Test Template Method 
Test Teardown  Close All Browsers 
Test Template  Validate Login with Differnt Valid Credentials 

*** Variables *** 
${URL}   http://ururl 
${Browser}  chrome 
${Title}   HomePage 
${delay}   5s 

*** Test Cases *** USERNAME PASSWORD 
Test User    user1  user1 

Admin User   admin  admin 

*** Keywords *** 
Validate Login with Differnt Valid Credentials 
    [Arguments] ${Uname} ${Pwd} 
    Open the Browser and enter the URL ${URL} ${Browser} 
    Enter the User Name ${Uname} 
    Enter the Password ${Pwd} 
    Click on Submit button 
    Verify HomePage displayed ${Title} 

Open the Browser and enter the URL 
    [Arguments] ${URL} ${Browser} 
    Open Browser ${URL} ${Browser} 

Enter the User Name 
    [Arguments] ${UserName} 
    Sleep ${delay} 
    Input Text id=username ${UserName} 

Enter the Password 
    [Arguments] ${Password} 
    Input Text id=password ${Password} 

Click on Submit button 
    Click Button css=.btn.btn-primary 

Verify HomePage displayed 
    [Arguments] ${Title} 
    Sleep ${delay} 
    Title Should Be ${Title} 

「數據由讀取Excel驅動」
閱讀從Excel工作表中的值,並運行多次,
這裏的示例代碼

*** Settings *** 
Documentation  CLM Registration Test Case 
Test Teardown  Close All Browsers 
Library   Selenium2Library 
Library   Collections 
Library   ExcelLibrary 
Library   String 

*** Variables *** 
${delay}   2s 
${excelName}  LoginTestData.xls 
${rowCount}  ${EMPTY} 
${cellCount}  ${EMPTY} 
${URL}   http://Ur test Test URL 
${Browser}  chrome 

*** Test Cases *** 
ReadFromExcelSheet 
    Open Excel Sheet ${excelName} 
    @{sheetNames} Get Sheet Names 
    ${sheetName} Set Variable @{sheetNames}[0] 
    ${rowCount} Get Row Count ${sheetName} 
    ${cellCount} Get Column Count ${sheetName} 
    #for loop to read all the rows in excel 
    : FOR ${rindex} IN RANGE 1 ${rowCount} 
    \ @{rowValues} Create List 
    \ @{rowValues} Get Values ${sheetName} ${rindex} ${cellCount} 
    \ Log to console row values are for index ${rindex} : @{rowValues} 
    \ Sleep ${delay} 
    \ Open Browser ${url} ${Browser} 
    \ Enter User Name @{rowValues}[0] 
    \ Enter Password  @{rowValues}[1] 
    \ Click on Submit Button 

*** Keywords *** 
Open Excel Sheet 
    [Arguments] ${excelName} 
    Open Excel ${excelName} useTempDir=False 

Get Values 
    [Arguments] ${sName} ${row} ${cCount} 
    Log to console user is in Get Values function 
    @{rValues} Create List 
    : FOR ${cindex} IN RANGE 0 ${cCount} 
    \ Log to console get the data from ${sName}[${cindex}][${row}] 
    \ ${cellValue} Read Cell Data By Coordinates ${sName} ${cindex} ${row} 
    \ Insert Into List ${rValues} ${cindex} ${cellValue} 
    [Return] @{rValues} 


Open The Browser 
     [Arguments] ${url} ${Browser} 
     Open Browser ${url} ${Browser} 

Enter User Name  
     [Arguments] username 
     Input Text id=username username 


Enter Password  
     [Arguments] password 
     Input Password id=password password 

Click on Submit Button 
     Click Button css=.btn.btn-primary 
+0

爲什麼你提到的Excel中? – shicky

+0

因爲我們可以從excel中讀取數據並進行數據驅動測試,我提到excel –

+0

我們可以但問問題的人清楚地表明不需要這個?在某些情況下,它肯定是有價值的,但我會小心不要混淆你試圖幫助的人 – shicky

3

我覺得你在單個測試用例和多個測試用例之間存在誤解。你上面有什麼將輸入一個用戶名,然後它將循環通過一個密碼,提交和註銷。只有當您碰巧在下一頁上有相同的元素時,它纔會嘗試輸入另一個密碼。

我建議有一個看看這裏:http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#data-driven-style

也有看一些類似的問題,你需要提供一個測試模板,擔心循環後,當你擁有了它工作了兩個測試用例會我的建議。