Automation One By One - Robot Framework - Test File
上一篇 / 下一篇 2011-07-07 11:41:37 / 个人分类:Robot Framework
在http://www.51testing.com/index.php?uid-49689-action-viewspace-itemid-240392中,提到了test case file,如果要想执行test case必须把test case放在test file中。
Test File包含了四部分:Setting(required), Variable(optional), Test Case(required), Keyword(optional)
1. Setting
3. Suite Settings
Test File包含了四部分:Setting(required), Variable(optional), Test Case(required), Keyword(optional)
- Setting、Test Case是必须的
- Variable只有当需要变量的时候才有用
- Keyword只有当standard libraries及external libraries没有,需要将多个keywords组合成另一个功能强大的keyword时才有用。
1. Setting
- Setting相当做初始化的工作。
- Robot Framework本身并不与被测试网站直接交互,而是以test libraries作为驱动,这些libraries可以是第三方的测试工具类库也可以是标准的类库,我们采用的Selenium Library。
- 要想将一个test case执行起来,必须将Selenium Library导入到test file中;Robot Framework提供了Library setting来完成这项工作。
- 要导入的library的名称是大小写敏感的。
- Selenium Library提供了5个默认参数:
- timeout=5.0, server_host=localhost, server_port=4444, jar_path=None, run_on_failure=Capture Screenshot
- Example
|
如果调用Selenium Library时不提供任何参数,则意味着默认参数刚会被使用。
|
如果调用Selenium Library时提供参数,则以提供的值使用。
Selenium Library有5个参数,有的参数需要赋新值,有的需要使用默认值,如何处理?
2. Test Case - 以登录百度账号为例Selenium Library有5个参数,有的参数需要赋新值,有的需要使用默认值,如何处理?
- 新值直接添加即可。
- 默认值,可以输入${EMPTY}或是'\ '代表调用时使用默认值。
*** Settings *** Library Selenium Library *** Testcases *** Login Should Succeed When the Correct Username and Password are Entered Start Selenium Server Open Browser http://www.baidu.com/ chrome Maximize Browser Window Click Link link=登录 Input Text username user1 Input Text normModPsp password1 Click Button xpath=//input[@value=' 登录 '] Page Should Contain user1 Close Browser Stop Selenium Server |
- 第1行,代表从现在开始是Test Case的内容了
- 第2行,是Test Case的Name
- 第3行,启动Selenium Server, 因为是代助selenium RC来驱动脚本的。
- 第4行,打开一个网址,Open Brower关键字提供了3个参数url, browser=firefox, alias=None;url是Required Arguement,其它的参数如果不提供则按默认值;本例子中的brower参数重新赋值了chrome,则相当于用chrome打开定义的url
- 第5行,最大化打开的浏览器窗口
- 第6行,单击登录链接
- 第7、8行,输入用户名及密码
- 第9行,单击登录按钮
- 第10行,校验是否登录成功
- 第11行,关闭浏览器
- 第12行,停止Selenium Server
- Robot Framework执行脚本时的机制是,当某一步失败,接下来的步骤将不会被执行,这样以来,如果上述的脚本任何一步失败,则tear down的task则永远不会被执行,那这个case也就永远不会被关闭,接下来的case也就不会被执行。
- 为了解决这个问题,我们可以将setup及teardown抽象出来,放在settings下面,这样一个case的某步失败后,Robot Framework会自动执行tearn down task,且下一个Case会在上一个case tear down后仍然可以执行(setup)。
- 相同的原因,我们也希望打开浏览及关闭浏览器的运作也需要在开始执行case前及case失败后完成,这个愿望是可以通过settting中的Test Setup/Test Teardown setting来实现。
*** Settings *** Library Selenium Library Suite Setup Start Selenium Server Suite Teardown Stop Selenium Server Test Setup Open Browser http://www.baidu.com/ chrome Test Teardown Close All Browsers *** Testcases *** Login Should Succeed When the Correct Username and Password are Entered Maximize Browser Window Click Link link=登录 Input Text username user1 Input Text normModPsp password1 Click Button xpath=//input[@value=' 登录 '] Page Should Contain user1 |
- Suite Setup: Fires once before any tests during the suite are run.
- Suite Teardown: Fires when all tests in the suite have completed, even when one of them has failed.
- Test Setup: Fires before each test is executed.
- Test Teardown: Fires at the end of each test execution, even when the test fails.
*** Settings *** Library Selenium Library Suite Setup Start Selenium Server Suite Teardown Stop Selenium Server Test Setup Open Browser http://www.baidu.com/ chromeTest Teardown Close All Browsers ***Variables*** @{username}= user1 user2 user3 ... @{password}= password1 password2 password3 ... *** Testcases *** Login Should Succeed When the Correct Username and Password are Entered Maximize Browser Window Click Link link=登录 Input Text username @{username}[0] Input Text normModPsp @{password}[0] Click Button xpath=//input[@value=' 登录 '] Page Should Contain @{username}[0] |
- 变量的设置应该放置在 ***Variable***
- 变量命名最好由a-z,A-Z,0-9,_,space组成
- Variable的作用域:
- Variable定义在Testcases内容中,则只对该testcase起作用;
- 如果一个test file中包含了2个test cases,而这2个test cases都需要用到同一个变量,那就需要把这个变量提升至Variables中,这个变量的作用域覆盖到了test file中所有的test cases;
- 无论是在test case中或test file中的变量,其作用范围只是这个test case或test file;如果这个变量需要被不同的test files或是test suite中共用的,则需要将所有变量存在一个文件中,然后将这个变量文件作为resource导入。
- 在Settings中,使用Resource setting完成导入的运作。
***Settings*** Resource /path/to/file.txt |
- Variable有类型有以下几种:
- Scalar Variable: 只有一个值的变量, 表达式${username}= user1
- List Variable: 一个变量中包含多个值,表达式:@{username}= user1 user2 user3 ...
- 取得某一个特定值时,用@{NAME}[i]来表达, i索引,从0开始
- Environment Variable: 操作系统级的变量,属全局变量表达式%{ENV_VAR_NAME}
- 在第3点中,已经把start/stop selenium server,open/close browser抽离出来了, 看看test case table中还有一个Maximize Browser Window,这个Keyword也可以抽离出来放在每个test caser之前完成,那么如何把它也放在Test Setup中呢?
- 因为setup/teardown setting只能带一个keyword,我们可以借助keywords table来实现
*** Keywords *** Setup Test Open Browser Open Browser http://www.baidu.com/ chrome Maximize Browser Window |
- 我们新建了一个Keyword,名称为Setup Test, 这个keyword实现的功能就是打开浏览器并最大化它,所以应该按如下修改脚本:
*** Settings *** Library Selenium Library Suite Setup Start Selenium Server Suite Teardown Stop Selenium ServerTest Setup Setup Test Test Teardown Close All Browsers ***Variables*** @{username}= user1 user2 user3 ... @{password}= password1 password2 password3 ... *** Testcases *** Login Should Succeed When the Correct Username and Password are Entered Click Link link=登录 Input Text username @{username}[0] Input Text normModPsp @{password}[0] Click Button xpath=//input[@value=' 登录 '] Page Should Contain @{username}[0] *** Keywords *** Setup Test Open Browser Open Browser http://www.baidu.com/ chrome Maximize Browser Window |
- 上述脚本中有些keywords不是特别易读,为了提高脚本的可读性,我们借助keyword table完成。
*** Keywords *** Setup Test Open Browser Open Browser http://www.baidu.com/ chrome Maximize Browser Window Enter Username [Arguments] ${username} Input Text uname ${username} Enter Password [Arguments] ${password} Input Text pwd ${password} Click the Login Button Click Button login Login Is Successful Page Should Contain Welcome |
- 优化后的脚本如下:
*** Settings *** Library Selenium Library Suite Setup Start Selenium Server Suite Teardown Stop Selenium ServerTest Setup Setup Test Test Teardown Close All Browsers ***Variables*** @{username}= user1 user2 user3 ... @{password}= password1 password2 password3 ... *** Testcases *** Login Should Succeed When the Correct Username and Password are Entered Open Login Page Enter Username @{username}[0] Enter Password @{password}[0] Click the Login Button Login Is Successful @{username}[0] *** Keywords *** Setup Test Open Browser Open Browser http://www.baidu.com/ chrome Maximize Browser Window Enter Username [Arguments] ${username}Open Login Page Click Link link=登录 Input Text uname ${username} Enter Password [Arguments] ${password} Input Text pwd ${password} Click the Login Button Click Button login Login Is Successful [Arguments] ${username} Page Should Contain ${username} |
- 执行这个Test Case时,先将目录定位到这个文件所在的文件夹,然后pybot validlogin.txt 即可。
TAG:
我的栏目
标题搜索
日历
|
|||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
1 | 2 | 3 | 4 | ||||||
5 | 6 | 7 | 8 | 9 | 10 | 11 | |||
12 | 13 | 14 | 15 | 16 | 17 | 18 | |||
19 | 20 | 21 | 22 | 23 | 24 | 25 | |||
26 | 27 | 28 | 29 | 30 | 31 |
我的存档
数据统计
- 访问量: 123606
- 日志数: 79
- 建立时间: 2008-02-14
- 更新时间: 2013-08-09