RobotFramework框架
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Robot Framework是一个通用的自动化测试框架。这是系列文章中的第一篇,重点在全面介绍该框架。你可能可以搜索到很多关于robot框架的文章,但是都比较零散,不成体系。
推出这个系列的意图是为了在这个话题上给出一个更结构化的视图,并且同时会包含一些已存在的文章便于构建更打的视图。请注意,这第一篇文章几乎没有包含任何实现的干货,而是一介绍整体概念为主,只有为后续文章做一些铺垫。
什么是自动测试框架?
由于介绍自动测试框架不是本文的主题,我们只简单介绍一下。所谓自动测试框架就是为了使测试自动化而开发的各种工具的集合,通常包括测试用例执行、测试报告生成、测试计划管理,以及各种接口、各种脚本支持等等。有些自动化测试框架的功能更加宽泛,还包括测试用例管理、测试计划管理、需求管理、bug管理、版本管理、并发的任务执行等等。
自动化测试基本框架
最小话的测试框架设计*
上图表示的是一个非常基本的自动化测试框架。一个能够执行测试、能够生成测试报告的核心系统,并且预留出插件接口,允许开发专用的测试功能。这样的插件结构保证插件的开发可以变得比较简单。在robot framework中,可以允许使用非常多的不同语言开发插件。
在详细介绍robot framework的结构之前,接下来我们要先讨论keyword-driven testing。什么是keyword-driven testing?
一个keyword是一个可以被用于测试SUT(System under Test)的功能或者一个方法。
一个keyword可以被另外一个keyword定义,也就是说keyword是分层次的:
•高层次keywords:反映SUT的某个具体的业务逻辑。
•低层次keywords:将一个高层次keyword分解为一些低层次keyword,低层次的keyword是高层次keyword的具体实现。
•技术keywords:提供技术实现以访问并测试SUT。
下面引用一副图×来说明一下:
嵌套的keyword定义
下面让我们看一个实际的例子:
googlesearch keyword
上面的keyword定义来自Selenium Library的Google Search KeyWord定义. 也就是说已经有许多定义到的keywords存在了,我们叫这些预先定义好的keywords为测试库(Test Libraries)。
Robot Framwork 概述
Robot Framework的安装包包含核心框架以及一套标准库。另外,还有许多外部库
(additional external Test Libraries)。这些外部库由robot framework的社区提供,服务于各种不同目的。可以随意将所有的keyword和不同的库混合使用。比如你可以用selenium库的keywords写一个测试web应用的例子,甚至可以远程的控制浏览器执行测试用例,同时使用数据库库去检查某些操作的结果。甚至不需要写一行代码,只需组合现有的keyword,用他们定义出一个高级别keyword即可。
Robot Framework还提供了一个图形界面的的开发工具(RIDE),用于帮助开发和管理测试用例。但是,测试库中的技术keyword是不能使用RIDE开发的。因为测试库中的keyword 必须与其开发语言所使用的IDE紧密结合,如使用java语言开发测试库时,eclipse通常是一个选择。测试用例的集合叫做Testsuites,测试用例保存在Resource Files中,这就构成了Robot Framework的三层开发架构。
•Testsuites:测试用例(或检查点)在这里被实现。每一个项目至少有一个testsuite。
在大一点的项目中,不同的测试功能会被放入不同的Testsuite。
•Resource Files:定义高级别的keywords。Resource Files是可以复用的。
•Test Library:每一个technical keyword需要一个新的Test Library实现。但是除非你用的是非常特出的技术,一般来说不需要写新的technical keywords。而且实现一个Test Library并不费力。
必须强调,当使用keyword时,无论使用本地实现的Test Library还是使用现存的keywords组合,没有任何区别。
Robot Framework和他的核心库是Python写成的. 所以Robot Frameword天然支持Python。通过Jython,我们可以使用java来实现Test Library,或者甚至任何能够通过Java调用的语言。通过IronPython,Robot Framework可以和.NET集成。
可能的安装是:
远程库(Remote Libraries)
远程库使我们可以在没有安装Robot Framework的机器上运行测试库(Test Library),并且只要支持XML-RPC的语言就可以编写测试库。
远程库与普通的库的使用没有很大区别,除了在测试用力或者资源文件的导入方式上。RIDE 同时也支持远程库。如果想学习远程库的开发,可以参看数据库库(Database Library)。远程库的功能实际上是一个测试库的addon提供的,另外,远程库启动后,成为一个server,而robot framework作为client去连接的它。
当使用Robot Framework创建一个新的工程时,首先我们可能需要思考以下几个问题:
1.使用哪种编程语言:Python、Jython还是Java?
2.测试脚本应该使用哪种格式(HTML、TEXT、BDD)?
3.是否需要使用Robot IDE(RIDE)?
4.如何在本地或CI环境上执行测试?