从今天开始持续写关于Robot Framework相关内容,之前总是关注于它的安装和使用,如果你想对它进行二次开发,或者是了解的更深入,就很有必要了解它的源码,了解它是如何实现的。

后面的叙述中,我都简称Robot Framework为RF, RF说它是一个自动化测试框架感觉不是特别合适,感觉更应该是一个平台,在这个平台上,根据自己项目的具体需求来构建适合自己的测试框架,可以是web UI端, 接口, 性能, app, 硬件方面,都能找到适合自己的库,找不到,我们也可以自己来实现。

它还提供了一个图形化界面和命令行接口,来让我们去执行,但是你想有更高的玩法,比如你想把测试结果和自己的用例系统联系,和bug管理平台联系,这时候也不用担心,它提供了Robot Framework API,让你自己去制定执行和分析测试结果。

想了解RF是怎么安装和使用的,可以参考我之前的文章,这都很基础,一看便知。也有一个专栏:

欢迎关注专栏:​​RobotFrameWork ​

Robot Framework API

官方文档和源码地址

原英文链接

​robot-framework.readthedocs.io/en/stable/​

github 地址:

​github.com/robotframew…​

Robot Framework API 接口

它提供了两种接口:python和java, Java采用org.robotframework.RobotFramework 类的形式。

我主要介绍python接口,如果你是java,可以自行在官方文档搜索了解。

python接口预览

如果想了解以上接口的详细内容,可参考官方文档​​built-in tool documentation​

Public API

robot.api package 提供了robot framework的公共接口

当前提供的对外公开接口如下:

  • ​logger​​ logger模块,用于日志记录
  • ​deco​​ 装饰器模块,提供了可以利用的装饰器库.
  • ​exceptions​​异常模块包含库可用于报告失败和其他事件的异常。这些异常也可以直接通过robot.api 导入,比如from robots.api import SkipExecution
  • ​parsing​​ 解析模块公开解析 API。此模块是 Robot Framework 4.0 中的新增功能。 Robot Framework 3.2 中已经通过robot.api 直接公开了各种与解析相关的函数和类,但它们实际上已被弃用,将来会被删除。
  • ​TestSuite​​ 用于以编程方式创建可执行测试套件, ​​TestSuiteBuilder​​ 类用于基于文件系统上的现有测试数据创建此类套件
  • ​SuiteVisitor​​ 用于在执行前处理测试数据的抽象类。这可以作为实现预运行修饰符的基础,该修饰符与​​--prerunmodifier​​命令行选项一起使用。
  • ​ExecutionResult()​​ 用于从XML输出文件和ResultVisitor抽象类读取执行结果的工厂方法,以便于进一步处理结果。ResultVisitor还可以用作pre-reboot修饰符的基础,该修饰符与--prerebootModifier命令行选项一起使用。
  • ​ResultWriter​​ 用于编写报告、日志、XML输出和XUnit文件的类。可以基于文件系统上的XML输出以及ExecutionResult()或已执行的TestSuite返回的结果对象写入结果。

All packages

简单实践

我们先简单实践一下,后续会针对每个包每个接口做说明

'''
有以下几种执行方式
from robot import run
# 1.执行某个具体的robot文件中的所有test case
run('path/to/tests.robot')
# 2.执行某个robot文件中带标签tag1和tag2的test case。
run('tests.robot', include=['tag1', 'tag2'], splitlog=True)
# 3.执行多个robot文件,并把结果输出来,这里你也可以替换成其他输出方式
with open('stdout.txt', 'w') as stdout:
run('t1.robot', 't2.robot', name='Example',
log=None, stdout=stdout)
命令行执行方式如下(例如windows cmd窗口):

robot path/to/tests.robot
robot --include tag1 --include tag2 --splitlog tests.robot
robot --name Example --log NONE t1.robot t2.robot > stdout.txt

'''

我先创建了如下2个testsuit.robot文件,然后我们来执行它们

带你初探Robot Framework API_修饰符

先命令行执行

带你初探Robot Framework API_测试_02

现在我们用robotframework 的接口来执行 创建一个python文件test.py,在这个文件里我们先引入robot.run接口的run方法 然后调用这个run方法,给它传入相应的参数。 执行它,如图所示,效果跟命令行执行是一样的

带你初探Robot Framework API_测试_03