前言
本着最新的3.0.4框架功能最全,更稳定,效率更高的想法,安装了python3.6.5+Robot Framework 3.0.3。pip list查看安装的版本(哈哈,看了下不是最新的,但也算是比较新的了。)
安装完之后,发现没有界面ride.py一时之间不知道如何下手写脚本,所以出现这篇文章。然后从百度上找资料、答案均无果,果断上官网上找找看,肯定有使用说明。然后就发现了编写脚本的方法。
1)首先介绍一下编写脚本的几种格式:Robot Framework测试数据以表格格式定义,使用超文本标记语言(HTML),制表符分隔值(TSV),纯文本或reStructuredText(reST)格式。这些格式的详细信息以及它们的主要优点和问题将在后面中介绍。使用哪种格式取决于上下文,但如果没有特殊需要,建议使用纯文本格式。
2)Robot Framework根据文件扩展名为测试数据选择解析器。扩展名不区分大小写,识别的扩展名为HTML(.html,.htm和.xhtml)、TSV(.tsv) 、纯文本(.txt和特殊.robot)、reStructuredText( .rst和.rest)。
1.HTML格式
HTML文件支持表格的格式和自由文本。这使得可以在测试用例文件中添加其他信息,并允许创建看起来像正式测试规范的测试用例文件。HTML格式的主要问题是使用普通文本编辑器编辑这些文件并不容易。另一个问题是HTML与版本控制系统不兼容,因为除了对实际测试数据的更改之外,由更改产生的差异还包含HTML语法。
HTML测试用例模板:http://robotframework.org/robotframework/latest/templates/testcase_template.html
HTML资源模板:http://robotframework.org/robotframework/latest/templates/resource_template.html
实例:
可以使用任何编辑器编辑HTML,但建议使用图形编辑器来实际查看表格。RIDE可以读取和写入HTML文件,但不幸的是它会丢失所有HTML格式以及测试用例表外的可能数据。
编码和实体引用
如果未指定编码,则Robot Framework默认使用ISO-8859-1。
支持HTML实体引用(例如ä
)。此外,可以使用任何编码,假设它是在数据文件中指定的。普通HTML文件必须使用META元素,如下例所示:
<meta http-equiv =“Content-Type”content =“text / html; charset = UTF-8”>
XHTML文件应该使用XML前导码,如下例所示:
<?xml version =“1.0”encoding =“UTF-8”?>
2.TSV格式
TSV文件可以在电子表格程序中编辑(如Microsoft Excel,WPS表格),因为语法非常简单,所以很容易以编程方式生成。它们使用普通文本编辑器也很容易编辑。
在TSV文件中,所有数据都在一个大表中。从一个或多个星号(*)中识别测试数据表,*table1* 然后是正常的表名和结束星号。第一个识别的表之前的所有内容都被忽略。
实例:
测试用例模板:http://robotframework.org/robotframework/latest/templates/testcase_template.tsv
资源文件模板:http://robotframework.org/robotframework/latest/templates/resource_template.tsv
下图是用excel打开的和记事本打开的模板。
编辑测试数据
如上图excel和记事本打开的区别。记事本打开时两边有双引号。
可以在任何电子表格程序中创建和编辑TSV文件。保存文件时选择以制表符分隔的格式,并记住将文件扩展名设置为.tsv。关闭所有自动更正并配置工具以将文件中的所有值视为纯文本也是一个好主意。
使用任何文本编辑器都可以相对轻松地编辑TSV文件,特别是如果编辑器支持从空格中直观地分隔。
Robot Framework首先将所有内容拆分为行,然后根据表格字符将行拆分为单元格来解析TSV数据。电子表格程序有时会在单元格周围加上引号(例如“my value”),而Robot Framework则会自动删除它们。数据中可能的引号是加倍的(例如,“my”“quotes”“value”),这个格式是正确的。如果您正在使用电子表格程序创建TSV数据,您不需要注意这一点,但是如果您以编程方式创建数据,则必须遵循与电子表格相同的引用约定。
编码
TSV文件总是应该使用UTF-8编码。由于ASCII是UTF-8的子集,因此自然也支持纯ASCII。
3.纯文本格式(推荐)
使用任何文本编辑器都可以很容易地编辑纯文本格式,它们在版本控制中也能很好地工作。由于这些优点,它已成为Robot Framework中使用最多的数据格式。
纯文本格式在技术上与TSV格式类似,但是单元格之间的分隔符是不同的。TSV格式使用制表符,但在纯文本格式中,您可以使用两个或多个空格或用空格(|)包围的管道字符。
该测试数据表必须有自己的名字前的一个或多个星号类似于在TSV格式。例如,*** Settings ***
和*Settings
工作方式相同。与TSV格式类似,忽略第一个表之前的所有内容。
在纯文本文件中,选项卡会自动转换为两个空格。这允许使用单个选项卡作为分隔符,类似于TSV格式。但请注意,在纯文本格式中,多个选项卡被视为单个分隔符,而在TSV格式中,每个选项卡都是分隔符。
3.1空格分隔符
用作分隔符的空格数可以变化,只要存在至少两个空格,因此可以很好地对齐数据。这比在文本编辑器中编辑TSV格式有明显的好处,因为使用TSV无法控制对齐。
因为空格被用作分隔符,所以所有空单元格必须使用${empty}变量或一个反斜杠转义。否则,处理空格与处理其他测试数据没有什么不同,因为开头、结尾和连续的空格必须总是转义。
建议:在关键字和参数之间使用四个空格。
3.2管道和空格分隔符
空格分隔格式的最大问题是可视化地将关键字与参数分开可能很棘手。这是一个问题,尤其是当关键字占用大量参数和/或参数包含空格时。在这种情况下,管道和空格分隔变体可以更好地工作,因为它使单元格边界更加明显。
纯文本文件可以以“空格”和“空格-管道”两种分隔的格式包含测试数据,但是一行内必须始终使用相同的分隔符。管道和空格分隔线是通过强制引导管道识别,但管道末端的管道是可选的。管道两侧必须始终至少有一个空格(除了开始和结束处),但除了使数据更清楚外,不需要对管道进行对齐。使用管道和空格分隔格式时,无需转义空单元格。
要求:
1)“空格”和“空格-管道”,二选一,一行内必须始终使用相同的分隔符
2)管道两侧必须始终至少有一个空格(除了开始和结束处)
3)测试数据中的 空格+管道 必须使用反斜杠进行转义
从Robot Framework 2.7.6开始,除了普通的.txt扩展名外,还可以使用特殊的.robot扩展名保存纯文本测试数据文件。新扩展使得更容易区分测试数据文件与其他纯文本文件。
4.reStructuredText格式
(reST)是一种易于阅读的纯文本标记语法,通常用于Python项目的文档(包括Python本身以及本用户指南)。reST文档通常编译为HTML,但也支持其他输出格式。使用reST文件时,有两种方法可以定义测试数据。您可以使用代码块并使用纯文本格式在其中定义测试用例,也可以使用与HTML格式完全相同的表格。
使用reST文件需要 安装Python docutils模块。
4.1使用代码块
reStructuredText文档可以包含所谓的代码块中的代码示例。当这些文档被编译成HTML或其他格式时,代码块是使用Pygments突出显示的语法。在标准的reST代码块中,使用该code
指令启动,但Sphinx使用code-block
或sourcecode
代替。代码块中编程语言的名称作为指令的参数给出。例如,以下代码块分别包含Python和Robot Framework示例:
.. code:: python
def example_keyword():
print 'Hello, world!'
.. code:: robotframework
*** Test Cases ***
Example Test
Example Keyword
当robotFramework解析reStructuredText的文件,可能它首先搜索code
,code-block
或sourcecode
含有robot框架测试数据块。如果找到这样的代码块,它们包含的数据将被写入内存文件并执行。代码块外的所有数据都将被忽略。
必须使用纯文本格式定义代码块中的测试数据。如下例所示,支持空格和管道分离变体:
此文本在代码块之外,因此被忽略。
.. code :: robotframework
***设置***
图书馆操作系统
***变量***
$ { MESSAGE } 你好,世界!
*** 测试用例 ***
我的测试
[ 文档] 示例测试
记录 $ { MESSAGE }
我的关键字/此文本也在代码块之外并被忽略。使用上面的块
空格分隔的纯文本格式和下面的块使用管道
分开的变种。
.. code :: robotframework
| ***关键字*** | | |
| 我的关键字 | [ 参数] | $ { path } |
| | 目录应该存在| $ { path } |
注意:在此格式中,转义通常使用反斜杠字符。使用reST表时不需要双重转义。
注意:代码块中对测试数据的支持是Robot Framework 2.8.2中的一项新功能。
4.2使用表格
如果reStructuredText文档不包含带有Robot Framework数据的代码块,则应该在表格中包含与HTML格式类似的数据。在这种情况下,Robot Framework将文档编译为内存中的HTML,并完全像解析普通HTML文件一样对其进行解析。
Robot Framework 根据第一个单元格中的文本识别测试数据表,并忽略识别的表类型之外的所有内容。下面使用简单表和网格表语法显示四个测试数据表中每个表的示例:
此文本在表外,因此被忽略。
============ ================ ======= =======
设置值值
============ ================ ======= =======
图书馆操作系统
============ ================ ======= =======
============ ================ ======= =======
变量价值
============ ================ ======= =======
$ {MESSAGE}你好,世界!
============ ================ ======= =======
============= ================== ============ ======= ======
测试用例操作参数参数
============= ================== ============ ======= ======
我的测试[文档]示例测试
\ Log $ {MESSAGE}
\我的关键字/ tmp
\
另一个测试应该等于$ {MESSAGE}你好,世界!
============= ================== ============ ======= ======
此文本也在表格之外并被忽略。上面的表格已创建
使用简单的表语法和下表使用网格表
做法。
+ ------------- + ------------------------ + ---------- - + ------------ +
| 关键字| 行动| 论点| 论点|
+ ------------- + ------------------------ + ---------- - + ------------ +
| 我的关键字| [参数] | $ {path} | |
+ ------------- + ------------------------ + ---------- - + ------------ +
| | 目录应该存在| $ {path} | |
+ ------------- + ------------------------ + ---------- - + ------------ +
注意:需要转义第一列简单表中的空单元格。上面的例子使用\但..
也可以使用。
注意:因为反斜杠字符是reST中的转义字符,所以指定反斜杠以便Robot Framework将看到它需要使用其他反斜杠来转义它\\
。例如,必须将新行字符写成\\n
。因为反斜杠也用于在Robot Framework数据中进行转义,所以在使用reST表时指定文字反斜杠需要双重转义c:\\\\temp
。
每次运行测试时基于reST文件生成HTML文件显然会增加一些开销。如果这是一个问题,最好分别使用外部工具将reST文件转换为HTML,并让Robot Framework仅使用生成的文件。
如果reStructuredText文档在语法上不正确(例如格式错误的表),则解析它将失败,并且无法从该文件中找到测试用例。执行单个reST文件时,Robot Framework将在控制台上显示错误。执行目录时,通常会忽略此类解析错误。
从Robot Framework 2.9.2开始,SEVERE
运行测试时会忽略低于级别的错误,以避免出现有关非标准指令和其他此类标记的噪音。这可能会隐藏真正的错误,但在正常处理文件时可以看到它们。