Robot Framework用法总结
环境搭建
作用:web自动化测试框架。
RF框架是基于python 的,所以一定要有python环境。网上可以自行查找。
下载地址: robotframework · PyPI
robotframework-2.8.5.win-amd64.exe
直接双击下一步即可。
最基本流程
创建项目New Project
File->New Project
注:选择directory原因是,在directory的项目下可以创建测试套件,如果是tpye为file,则只能创建测试用例,这不利于用例的管理。
创建测试套件New Suite
右键项目Test,点击New Suite。
注:选择file原因是,在file的测试套件下可以创建测试用例,如果是tpye为directory,还得重新再继续建file的测试套件,才能创建测试用例,因为测试用例只能在file类型下创建。
创建测试用例New Test Case
右键测试套件,点击New Test Case。
最终页面显示
命名
测试套件命名
- 套件名称应该尽可能描述清楚。
- 套件名称会从文件名或目录名自动创建:
- 文件名的扩展名不会出现在套件名称中;
- 下划线会被转成空格;
- 如果套件名称都是小写字母,那么名称会自动转成首字母大写。
- 名称可以相对长一点,但是过长的话在文件系统中不方便。
-
如果需要的话,顶级套件的名称可以在命令行使用
--name
选项进行重写。
举例:
- 在文件系统中看到的是login_tests.robot,在RIDE中看到的是Login Tests
- IP_v4_and_v6在RIDE中看到的是IP v4 and v6
测试用例命名
- 测试用例和测试套件名称描述应该相似。
- 如果套件包含了多个相似的测试,并且套件命名良好的话,那么测试名称可以短一点。
- 测试用例名称就是你在测试用例文件中指定的名称,不会有任何的转换。
比如,如果我们在一个和非法登录相关的
invalid_login.robot
文件中有很多测试,那么下面这些测试用例名称都是可以的:
*** Test Cases ***
Empty Password
Empty Username
Empty Username And Password
Invalid Username
Invalid Password
Invalid Username And Password
下面的名称就有点长了:
Login With Empty Password Should Fail
Login With Empty Username Should Fail
Login With Empty Username And Password Should Fail
Login With Invalid Username Should Fail
Login With Invalid Password Should Fail
Login With Invalid Username And Invalid Password Should Fail
关键字命名
- 关键字名称描述应该清晰。
- 应该解释该关键字做什么而不是怎么做。
-
不同的抽象级别(比如,
Input Text
和Administrator logs into system
)。 - 至于应该是每个单词首字母大写还是应该只有名称的首字母大写没有明确的规范。
-
每个单词的首字母大写通常用于关键字名称很短的情况,比如
Input Text
; -
如果关键字的命名像一个句子,那么一般将该关键字的首字母大写。比如
Administrator logs into system
。这些关键字通常也具有更高的级别。
好的关键字命名:
*** Keywords ***
Login With Valid Credentials
不好的关键字命名:
*** Keywords ***
Input Valid Username And Valid Password And Click Login Button
setup和teardown的命名
- 尽量使用描述做什么的名称。可能使用一个已存在的关键词。
- 如果setup和teardown包含了不相干的步骤,那么可以接受更抽象的名称:
-
将关键字名称逐个列出来会产生重复和维护问题(比如
Login to system, add user, activate alarms and check balance
) -
使用一些通用的名字通常来说更好一些(比如
Initialize system
)。 -
如果已存在实现了更低级别步骤的关键字,那么建议使用内置的
Run Keywords
。
*如果setup或teardown只需要一次的话,那么使用最好,这样不会重复。 - 使用测试的每个人务必要明白该setup或teardown做了什么。
好的命名:
*** Settings ***
Suite Setup Initialize System
好的命名2(如果只使用一次):
*** Settings ***
Suite Setup Run Keywords
... Login To System AND
... Add User AND
... Activate Alarms AND
... Check Balance
不好的命名:
*** Settings ***
Suite Setup Login To System, Add User, Activate Alarms And Check Balance
Robotframework库的介绍
BuiltIn内建库
首先先介绍下robotframework的库,通过点击F5快捷键。目前只有内建的库BuiltIn,关于内建的库BuiltIn的关键字说明请查看另外一篇博文: 学习Robot Framework必须掌握的库—-BuiltIn库 。
注:其实关键字就是方法名函数名而已。
第三方库
只有内建的库往往还不能满足需求,还可以导入第三方库,如操作页面的Selenium2Library。
第三方库,主要是 [PYTHON目录]\Lib\site-packages 里的库,一般安装的库会在此目录下。Selenium2Library库的安装也可以详看笔者的另外一篇博文: Robot Framework的环境搭建 。博文中有说明Selenium2Library库的安装。
在测试套件下的工作区的右方,点击Library,在弹出框的name栏输入“Selenium2Library”,点击OK即可。
当工作区的Library那一行黑色显示,说明导入成功(如果显示红色说明导入不成功,可自行百度解决)。
点击F5快捷键查看,可查看多了一个Selenium2Library的库。
导入自己编写的库
比如说有些功能想自己编写,比如说如下代码,想要导入实现校验url的功能,文件名为Myimport.py(文件名随意取的,最好是英文的),该文件保存在D:\robotframework\MyLibrary,此时需要将该路径添加到 [PYTHON目录]\Lib\site-packages 下的 后缀名为pth 的文件(文件名随意取的,最好是英文的)中。
# -*- coding:utf-8 -*-
自己编写,验证获得一个URL地址的扩展名。
import re
def Matchurl(str0):
验证url的有效性
str1=re.split("[.]",str0)
listt = ['php','html','asp','jsp']
if str1[-1] in listt:
return "TRUE"
else:
return "FAIL"
if __name__=='__main__':
str_input='hehe.php'
print match_url(str_input)
然后重启ride,在测试套件的工作区的右方,点击Library,在弹出框的name栏输入“Myimport”,点击OK即可。
点击F5,即可看到导入自己编写的库。
注意,在Myimport.py文件中编写函数描述时,前面要加u,否则F5查看时,会乱码。
注意,在Myimport.py文件中函数命名为MatchUrl和Match_Url,在ride中都会解析为Match Url。
文档
测试套件文档
- 通常,最好是将所有的文档添加到测试用例文件中。
- 应该包含背景信息,比如为什么创建测试,执行环境需要注意的地方等等。
- 不要重复测试套件名称,如果真的不需要,那就最好不要有文档。
- 不要包含太多的详细信息和测试用例。
- 测试用例本身应该是理解起来清晰的。
- 重复信息浪费时间和精力,还会造成维护问题。
- 文档可以包含更多信息的链接。
-
如果需要以键值对形式的文档信息,可以考虑使用测试套件元数据metadata,比如
Version:1.0
。 -
顶级套件的文档和元数据可以分别使用
--doc
和--metadata
选项从命令行进行设置。
好的文档:
*** Settings ***
Documentation Tests to verify that account withdrawals succeed and
... fail correctly depending from users account balance
... and account type dependent rules.
... See http://internal.example.com/docs/abs.pdf
Metadata Version 0.1
不好的文档(特别当套件名称像
account_withdrawal.robot
时):
*** Settings ***
Documentation Tests Account Withdrawal.
测试用例文档
- 测试用例通常不需要文档。
- 父套件的名字和可能的文档以及测试用例本身的名字应该给出足够的背景信息。
- 测试用例的结构应该尽可能地清晰,不需要文档或其它注释。
- Tags标签通常比文档更灵活,并提供了更多的功能,比如statistics【统计】、include/exclude等等。
- 有时测试文档是有用的,适当地使用很关键。
好的文档:
*** Test Cases ***
Valid Login
[Tags] Iteration-3 Smoke
Open Login Page
Input Username ${VALID USERNAME}
Input Password ${VALID PASSWORD}
Submit Credentials
Welcome Page Should Be Open
不好的文档:
*** Test Cases ***
Valid Login
[Documentation] Opens a browser to login url, inputs valid username
... and password and checks that the welcome page is open.
... This is a smoke test. Created in iteration 3.
Open Browser ${URL} ${BROWSER}
Input Text field1 ${UN11}
Input Text field2 ${PW11}