2016-12-22 63 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

也有看一些类似的问题,你需要提供一个测试模板,担心循环后,当你拥有了它工作了两个测试用例会我的建议。