Robot framework(RF)基本使用
上一章我们介绍了如何搭建RF+WD的基本环境,那么这一章主要介绍RIDE的基本使用。
![8fe71efb2259af465f36c0c100a24ee0.png](https://i-blog.csdnimg.cn/blog_migrate/013be4f5c22e6a75728782147de14ac4.jpeg)
1.1 第一个测试项目
3.1.1 第一个测试用例
创建项目涉及到一系列相关的操作,包括新建项目、新建测试套件、新建测试用例等,下面用一个例子来介绍RIDE的这方面的使用。
创建项目步骤:
1、单击“File;New Project” 创建项目。
![81b6e85d2b93bba7935a46fbadaf67c6.png](https://i-blog.csdnimg.cn/blog_migrate/6de78972d18ca2a2dd655d750560730b.jpeg)
2、在弹出的新建项目对话框中输入项目名。
![cc2c4f209eb65385b562bb8c89eb0759.png](https://i-blog.csdnimg.cn/blog_migrate/d250ea93fde586ffdb217357daebae7c.jpeg)
A、 Name:项目名
B、 Parent Directory:项目父文件夹,可以通过“Browse”更改
C、 Type:项目的类型(对于项目我们建议Type选择Directory)
File:把项目作为一个文件管理
Directory:把项目作为一个目录管理
File下面可以直接创建测试用例,Directory下面不可以直接创建用例,可以创建测试套件(Suite)
D、 Format:文件的类型
E、 Created Path:如果Type选择的是File,created path保存成”项目名.txt”
如果Type选择的是Directory,created path保存成“项目名__init__.txt”
3、项目的编辑区
![92e0a5cf6b405e7d73c47ff60ecd0e27.png](https://i-blog.csdnimg.cn/blog_migrate/fc0059cacc58cd858a6eacafb17e2fbf.jpeg)
4、新建Test Suite。
![9e21c3cbcbd13bf1609259168b2edf5c.png](https://i-blog.csdnimg.cn/blog_migrate/3989ff5725db0d7ffad6071e112f2a97.jpeg)
5、在编辑区,可以增加库。测试web项目需要增加selenium库。
![42e518a57e1bf6f3a558004fe4900190.png](https://i-blog.csdnimg.cn/blog_migrate/0ec3c4d4b6e69b9f20f8165f398fee0a.jpeg)
6、写入suite名,Type选择File。
![6e908099d5702b9aa071f7eb2a56c5f5.png](https://i-blog.csdnimg.cn/blog_migrate/ed1b7eb6f4778f7f53fc1dad0120d0a6.jpeg)
7、新建测试用例。
![e292456b2afbc024336e0a92c1ece956.png](https://i-blog.csdnimg.cn/blog_migrate/06d6e24dee367f1d3588416687a28a67.jpeg)
8、填入用例名。
![50fa62c782ca137a808235793e3adcb5.png](https://i-blog.csdnimg.cn/blog_migrate/66baf7e328fada9e161a82801f144cb4.jpeg)
9、编辑测试用例。
![5ed8b98e4e0c462f973facbacd0b7383.png](https://i-blog.csdnimg.cn/blog_migrate/7828ecede517b588c6e9a3286d74e958.jpeg)
10、在表格中编写测试用例。
![ea950181eeff9ddc2189c5ecd962d922.png](https://i-blog.csdnimg.cn/blog_migrate/8275b6d68da097f4b17d023e13f93959.jpeg)
11、执行测试。
![c371754fb7c6e3808a2ac93010c38ff4.png](https://i-blog.csdnimg.cn/blog_migrate/ea80dfe78414af27bc524f261364ecac.jpeg)
快捷键按F8
3.1.2 从F5 开始学习
Robot Framework 并没有像其它框架一样提供一份完整的API 文档,所以,我们没办法通过官方API文档进行习。RIDE 提供了F5 快捷键来打开帮助文档。
![aace382c932834cd77d6923064dfe5f2.png](https://i-blog.csdnimg.cn/blog_migrate/86985f040d0032bd615219d85b0353a9.jpeg)
【search term】: 用于搜索关键字。
【source】:用于选择相关库,默认在所有库下搜索关键字。
3.1.3 测试项目与测试套件的概念
如果你查看当前所创建的项目会发现,“测试项目”是一个目录。
![2a9108b5a489b445db5ec375f1085c05.png](https://i-blog.csdnimg.cn/blog_migrate/dfe0a9183ca1752060eb0c9ec99ab2f5.jpeg)
“测试套件”则是一个txt 文件。
![bef36f8e51cd012c2774b7185d8ccefe.png](https://i-blog.csdnimg.cn/blog_migrate/dff5d7dfa0880014c6c030068cd2febd.jpeg)
“测试项目”和“测试套件”本质上并没有什么区别,如果你愿意,也可以把测试项目创建成一个文件:
![5b133e7dfc5e03e0b9ccdfc1f83b709a.png](https://i-blog.csdnimg.cn/blog_migrate/06a38d49253551bb4e668a52d21ced7d.jpeg)
如果你把“测试项目”创建成一个文件后,那么在这个“测试项目”下就不能再创建“测试套件”了,只能创建测试用例。
除非我们所创建的“测试项目”非常小,只需要几个用例。一般情况下,我们会选择将其定义成一个目录,这样它就可以分成多个套件,套件可定义为不同的业务,不同的业务下再分用例,结构会更加清晰。
当然,你同样也可以把“测试套件”创建成一个目录。
![2ec1380807dcf7414bdfc29565caed5f.png](https://i-blog.csdnimg.cn/blog_migrate/a1f7f20cb41c20a25d2a0d482b67ce22.jpeg)
如果你把“测试套件”创建成了一个目录后,就不能直接在其下面创建用例了,还需要再创建的“File”类型的“子测试套件”。说白了就是用例只能创建在file 类型的套件中。
下面用一张图来表述他们的关系:
![abf6c4872127d0d2df7ea30efff75577.png](https://i-blog.csdnimg.cn/blog_migrate/80221c0a181e92796b92246921052e9b.jpeg)
1.2 Edit 标签
下面我们来看一看测试项目和测试套件所提供的Edit 标签。
从而“测试项目”和“测试套件”所提供的Edit 标签的功能也可看出两者是一样的。
测试项目图如下:
![64308e099f1bfa7b63b0d747262f92cb.png](https://i-blog.csdnimg.cn/blog_migrate/f683a4173c9da70bf6c2749c2ecb6b64.jpeg)
测试套件图如下:
![a9e74e91b5e1f804cff4020bf2812929.png](https://i-blog.csdnimg.cn/blog_migrate/09762c975662ef8adb715c6ca979f3e8.jpeg)
在Edit 标签页中主要分:加载外部文件、定义内部变量、定义元数据等三个部分。
(1)加载外部文件
Add Library:加载测试库,主要是[PYTHON 目录]Libsite-packages 里的测试库
Add Resource:加载资源,主要是你工程相关的资源文件
Add Variables:加载变量文件。
(2)定义内部变量
Add Scalar:定义变量
Add List:定义列表型变量
(3)定义元数据
Add Metadata:定义元数据。我是直接翻译的,这个是新增加的部分,大概看了一下作用是在report和log 里显示定义好的内容,格式和document 一样。
3.2.1 导入库
点击Edit 标签页右侧的“Library”按钮,来添加库。在添加库之前,首先库已经在Python 下进行了安装。如,添加“Selenium2Library”库。
![901a3c47398a87a082a77152d4479ae5.png](https://i-blog.csdnimg.cn/blog_migrate/2215e03447428ed4dcbb85774d253c7a.jpeg)
如果添加的库不存在或库名错误,将会红色显示,黑库正常表示正常。
如果你是在“测试套件”中添加的库,那么这个库中所提供的关键字可以被当前测试套件下的用例使用。
如果你是在“测试项目”中添加的库,当前项目下的测试用例不能使用库中的关键字,需要在用例相应的“测试套件”中再次添加库。
现在按F5 就可以查看库中所提供的关键字。
![1cd3b3f5f1696991d7c263c782d674aa.png](https://i-blog.csdnimg.cn/blog_migrate/da52c234851e68b131b28a6b1d858b87.jpeg)
3.2.2 导入资源
点击Edit 标签页右侧的“Resource”按钮来添加资源。这个资源一般为项目关的文件。比如,项目的自定义关键字文件。
下面我们就来添加一个“mykeywork.txt”文件。
![4e6fe66e6f2cdd28cbaaeea509ff9188.png](https://i-blog.csdnimg.cn/blog_migrate/bbdf7ec20edd6125da5aa16df1b7f5b4.jpeg)
关于添加资源的作用域与库一样。我这里是添加到的测试套件中,那么它的作用域就是当前测试套件下的所有用例。
查看RIDE 左侧项目列表,会发现“External Resource”下多了一下“mykeywork.txt”的资源。展开关键字会看到文件中定义的打开浏览器、最大化浏览器、输入用户名、输入密码、点击登录、关闭浏览器等关键字。导入资源之后就可以在用例中使用这些关键字。
![aba9d2a9feefc26553d877da5a11eaf9.png](https://i-blog.csdnimg.cn/blog_migrate/3a6a2b13e91b68c35102154fe8be3ead.jpeg)
3.2.3 定义变量
点击Edit 标签页右侧的“Add Scalar”按钮来创建变量。这里创建的变量可以被整个测试套件中的用例所使用。也可以认为是一个“公共变量”。
![51050ce5344f5febb4c8196493cb04ed.png](https://i-blog.csdnimg.cn/blog_migrate/6a66587333a17dfdbcf9ea874d91668e.jpeg)
![48d635252f7f2ae9c4d31ead3e12c2ea.png](https://i-blog.csdnimg.cn/blog_migrate/441ea5855dd9214be9ee04d49eb63e01.jpeg)
Name 用于定义变量名:${url}
Value 用于给变量赋值。http://127.0.0.1:8090/recruit.students/login/view
下面就可以在测试用例中来使用这个变量。
![4b6c048f627c012ca7e3f49683cac498.png](https://i-blog.csdnimg.cn/blog_migrate/29ee17cdc6ad3dfd995397f7f6576d76.jpeg)
用例中是两个打印信息,分别使用了${url}变量。
![13d831f2b7581b687f6fae485d13a585.png](https://i-blog.csdnimg.cn/blog_migrate/09ecd5f29f5bb86e733ca03b91b966da.jpeg)
相信从用例的执行结果中我们已经体会到了“公共变量”的作用。
3.2.4 定义列表变量
列表变量可以用来定义一维或二维数组。下面我们就来创建一个列表变量。点击Edit 标签页右侧的“Add List”按钮来创建登录用户的一组变量@{username}
![bfaa4d2c49138fb14bf98935cd07fac5.png](https://i-blog.csdnimg.cn/blog_migrate/1566120f9f9486008bab81f151058229.jpeg)
![5a6c1b335ae28eebe1defdb4e84ba258.png](https://i-blog.csdnimg.cn/blog_migrate/402055d3073403a12c2eda666c41bcdf.jpeg)
Name 定义变量名为:@{username}
Value 填写列表变量的值:admin、zhangsan、lisi、wangwu。
在测试用例中可以对这个一维数组进行遍历。
![35f77a5c7266268a5b4051fc5cb2146e.png](https://i-blog.csdnimg.cn/blog_migrate/9ff0f98c248f92c1a5ba8785cbfac499.jpeg)
运行结果:
![03fc0554521ffd9b06575f22cb10890f.png](https://i-blog.csdnimg.cn/blog_migrate/2d94ed83990013a318034e3c1e35cdb2.jpeg)
1.3 Text Edit 标签
我们在Edit 标签页完成的工作,都可以在Text Edit 标签页上完成。它们之间是对应关系,Edit 可视化的提供的按钮输入框,对于用户来说更容易知道我要怎么做;而在Text Edit 中只是一个空当当的文本,我们跟本不知道如何下手。
好在我们已经在Edit 中做了很多事情。切换到Text Edit 将会看到这些信息的展示。
![1ae654c92a7693b4601774a081d0bc77.png](https://i-blog.csdnimg.cn/blog_migrate/fae409cdd8a1adc69c67cadbe1b93595.jpeg)
或者切换到“D:projectEducationalest_project1”目录下,通过记事本打开“Selenium2Library_库的关键字练习.txt”。
![b97ba012149cd700d9718cdd4330b14b.png](https://i-blog.csdnimg.cn/blog_migrate/d74d8d8b8a3836bbe614250cb9605bce.jpeg)
![01eb068508cd73d3d1dde90116bbbe8c.png](https://i-blog.csdnimg.cn/blog_migrate/7aa5ff034c67f6a308970762d4e0bd04.jpeg)
测试用例的本来面目也是这个样子的,只是在RIDE 中对它进行的“美化”。
其实在这个在Text Edit 下或第三方编辑器下编写Robot Framework 测试的效率要远远高于Edit 标签中的“填表格”式编写。读者可以在两种标签页之间切换来提高用例的开发效率。
1.4 Run 标签
3.4.1 导入库
下面是Run 标签的截图:
![bd1d880935edee55c3bbe9ba0cf8e857.png](https://i-blog.csdnimg.cn/blog_migrate/0147a87e5512a9a402fa832795d8b41e.jpeg)
第一眼看上去,Run 标签提供了丰富的操作和日志。按照截图我们依次来说明Run 标签上的按钮和输入框的作用:
【Execution Profile】:选择运行方式,里面有pybot、jybot 和custom script。其中我们默认是用pybot来运行案例,pybot 的运行Python 编译器完成。jybot 需要安装Jython 的支持。custom script 是选择自定义的脚本来运行。
【Start和Stop】:用例的运行和停止。
【Report和Log】:报告和日志,要运行之后才能点击。他们之间的区别:报告更多是结果上的展示,日志更多是过程的记录,在测试用例调试的过程中更多使用日志来查看执行错误。当只想知道测试用例的最终执行情况时用报告。
【Autosave】:自动保存,如果不勾选,在修改了用例之后如果没有保存的话,运行案例时会提示是否保存。勾选则在运行时自动保存了。
【Arguments】:pybot 的参数(或者jybot 等),可以在这里输入pybot 的命令完成相应的操作。
【Only Run Tests with these Tags】:只运行这些标记的测试案例。
【Skip Tests with these Tags】: 跳过这些标记的测试案例。
下面的两个区域,中间区域记录用例的执行过程,底部的区域输出用例的执行结果。
![2ddb1e946c28745d737a2346b95eb2f7.png](https://i-blog.csdnimg.cn/blog_migrate/37fc54786799b3be9efeddc229e9b404.jpeg)
3.4.2 运行与停止
在Run 标签页提供了运行与停止的按钮,使用很简单。点击“运行”按钮就可以运行,在C:Python27Libsite-packagesobotideun 目录下,有个process.py 文件,RIDE就是通过这个文件去执行测试的,大家如果想了解原理,可以去读下相关代码。
3.4.3 报告与日志
当用例运行结束,Robot Framework 生成三个文件:output.xml、log.html 和report.html。
output.xml 记录的测试结果是xml 文件,这个文件不够直观。根据特定的需要可以编写脚本读取xml文件并生成特定的测试报告。
相比较而言log.html 和report.html 报告要直观得多,因为是html格式。
查看log.html 文件,点击Run 标签而上的“Log”按钮,通过默认浏览器打开。
![5e8b39aa9fcf11bbd2722c3103e9fec1.png](https://i-blog.csdnimg.cn/blog_migrate/81dc31dcb43a9efd6b03458cb9badb8e.jpeg)
在log.html 文件中可以查看用例执行的每一步,适合跟踪定义问题。
![c907e8f25cd52a89d3246a63cb8df6eb.png](https://i-blog.csdnimg.cn/blog_migrate/3814a0c94bcf9aa7471147fdf62e6f73.jpeg)
查看report.html,点击Run 标签而上的“Report”按钮,通过默认浏览器打开。
![5592eeb7260611e891fbfe9da619e8a6.png](https://i-blog.csdnimg.cn/blog_migrate/ced036af5707d309e94c683850f9d412.jpeg)
report.html 用于最终结果的展示,适合了解测试用例的执行情况:测试了哪些模块,用例数、失败率等。
3.4.4 筛选执行用例
这一节来探讨一下,几中方式可以筛选要运行的运用例。
第一种:勾选
![6870d9b6f592ae89e9ea2e90e8f2f649.png](https://i-blog.csdnimg.cn/blog_migrate/f09bcc33ed21f5ce7040b0369d66f75a.jpeg)
这种方法最简单和直观,要运行哪条用例就勾选哪一条。如果全部不勾选,点击“运行”按钮会运行所有用例。
也可以在“测试套件”上右键选择:
![ab5c0543544baeadac82a5ed8d1ff5a1.png](https://i-blog.csdnimg.cn/blog_migrate/67a0a5e3f70f3626b068da058175631b.jpeg)
Select All Test:选择当前套件的所有用例。
Select Only Failed Test:选择当前套件下运行失败的用例。
Select Only Passed Test:选择当前套件下运行成功的用例。
对于一个测试套件下有几十上百个用例来说,这几选项将非常有用。
第二种:用命令
这就用到Run 标签中的Arguments 功能。
![840f2c2daa1dad5717b6841609202f9f.png](https://i-blog.csdnimg.cn/blog_migrate/88eb0dd6506f57351d8d50631ef59eca.jpeg)
在Arguments 的输入框内输入“-t test_add_list”。点击“Start”按钮,只执行了-t test_add_list 这一条用例。
Arguments 能做的事情可不止于此。想了解更多多命令。可以在cmd.exe 下执行“pybot.bat --help”。
![e158a21f8c1b023d56a60dbe9ba17df4.png](https://i-blog.csdnimg.cn/blog_migrate/81c59b71220f18e73a9d1beb2d75e418.jpeg)
第三种:筛选标记
这种方式就非常有意思的,对于不同的人来说会有一些标记,比如某富二代的标记就是“任性”。对于用例来说也可以打上标记。比如“重要”、“一般”、“基础”等。
点击某个用例,你会看到“Setting>>”的按钮,点击按钮展开:
![edaa56b38ddb7bcb85e3c3a5ed96c59c.png](https://i-blog.csdnimg.cn/blog_migrate/1528e7a348dd51a30068ff3ecb76fd87.jpeg)
在最下面将会看到“Tags”的选项,在“”的输入框内输入“v1.0”。这条用例就打上了版本“v1.0”的标记。
现在切换到Run 标签,我要运行带“v1.0”标记的用例了,如何去做了?这就要用到:
Only Run Tests with these Tags:只运行这些标记的测试案例。
Skip Tests with these Tags: 跳过这些标记的测试案例。
![12dd1950ac0c800016f2a5262519b027.png](https://i-blog.csdnimg.cn/blog_migrate/dca348ba6cf45df76a0ab537800e895b.jpeg)
因为“test_add_list”被打上了“重要”的标记,所以它被执行了。
对于一个用例来说,我们可以为它添加多个标记。勾选“Skip Tests with these Tags”选项可以跳过某些标记的用例。
3.5 Settings
不管是测试套件还是测试用例都会有一个“Setting>>”的按钮,因为它默认是被折叠起来的,所以,一般不太容易发现它,更不知道点击它之后是可以展开的。
3.5.1 测试用例的Settings
点击测试用例上的“Settings>>”按钮,会看到下面的选项。
![a27dac202fd98686b6ffa927ada46495.png](https://i-blog.csdnimg.cn/blog_migrate/9f67bf83c4204de7c111aee1327254fc.jpeg)
Documentation:用于描述用例的一个小文本,如果是URL 地址转换为可点击的链接。
![5fe52b0393696ace938986755b5b920d.png](https://i-blog.csdnimg.cn/blog_migrate/324f15cd9ae8f1c70aa14ef22fac3191.jpeg)
Setup 和Teardown:如果你了解unittest 单元测试框架的话,一定对这两个单词不陌生。
setUp 用于设置初始化工作,在每一个测试用例前先被执行
tearDown 方法在每个测试方法执行后调用,这个方法用于完成测试用例执行后的清理工作,如执行
“close browser”关闭浏览器等。
TimeOut:用于设置用例的超时时间。如“1 min 10s”、“ 2 hours”等。
Template:指定模板使用的关键字。
Tags :用于给用例添加标记。在上一小节中有用到这个功能。
3.5.2 测试套件的Settings
![fd541ea9a63efcaafc60f62d888f7a9f.png](https://i-blog.csdnimg.cn/blog_migrate/b4bb0ba5667332e68953d9d28bc5bb71.jpeg)
这里的Setup 和Teardown 分测试套件的和测试用例的。“Suite Setup”和“Suite Teardown”用于当前套件的开始和结束所要做的事情。“Test Setup”和“Test Teardown”会作用于套件下每一个测试用例开始和结束所要做的事情。
Force Tags:表示当前测试套件下测试用例强制的标记。
Default Tags:表示当前测试套件下测试用例默认的标记。