基本用法

工具室内可容纳。

启动测试执行

简介

robot [options] data_sources
python|jython|ipy -m robot [options] data_sources
python|jython|ipy path/to/robot/ [options] data_sources
java -jar robotframework.jar [options] data_sources

请注意

脚本执行 测试使用Python,Jython和IronPython分别。 这些脚本 仍然安装,但该计划在未来是轻视和删除它们。

无论执行方法,测试数据的路径(路径) 执行命令后作为参数给出。 此外,不同的 命令行选项可以用来改变测试执行或生成 输出在许多方面。

指定要执行的测试数据

脚本 可以使用,但其他执行的方法类似。

robot tests.robot
robot path/to/my_tests/
robot c:\robot\tests.robot

选择覆盖,如第二 在下面的例子:

robot my_tests.robot your_tests.robot
robot --name Example path/to/tests/pattern_*.robot

使用命令行选项

机器人框架提供了许多命令行选项,可以 用来控制如何执行测试用例,输出是什么 生成的。 

利用期权

当使用选项时,他们必须给跑步者之间 脚本和数据来源。 例如:

robot -L debug my_tests.robot
robot --include smoke --variable HOST:10.0.0.42 path/to/tests/

短期和长期的选择

, 因为他们更容易理解。

设置选项值

设置两个 变量。 如果选择只使用一个值数 次,最后给出的值是有效的。

禁用选项接受没有值

不会激活管制模式,会回来吗 正常状态rc。

请注意

前缀是一个新的功能 2.9机器人框架。 在早期版本的选择接受不 值可以通过使用相同的选项被禁用了。

简单的模式

匹配按照下列规则:

  • 是一个通配符匹配任何字符串,甚至一个空字符串。
  • 是一个通配符匹配任何单个的字符。
  • 除非特别指出,否则模式匹配情况下,空间,凸显不敏感。

例子:

--test Example*     # Matches tests with name starting 'Example', case insensitively.
--include f??       # Matches tests with a tag that starts with 'f' or 'F' and is three characters long.

标记模式

运营商下面的解释。 这些操作符可以 用于将两个或两个以上的个人标签或模式。

&

是等价的:

--include fooANDbar     # Matches tests containing tags 'foo' and 'bar'.
--exclude xx&yy&zz      # Matches tests containing tags 'xx', 'yy', and 'zz'.

整个模式匹配如果任何个人模式匹配:

--include fooORbar      # Matches tests containing either tag 'foo' or tag 'bar'.
--exclude xxORyyORzz    # Matches tests containing any of tags 'xx', 'yy', or 'zz'.

必须不匹配:

--include fooNOTbar     # Matches tests containing tag 'foo' but not tag 'bar'.
--exclude xxNOTyyNOTzz  # Matches tests containing tag 'xx' but not tag 'yy' or tag 'zz'.

不匹配:

--include NOTfoo        # Matches tests not containing tag 'foo'
--include NOTfooANDbar  # Matches tests not containing tags 'foo' and 'bar'

:

--include xANDyORz      # Matches tests containing either tags 'x' and 'y', or tag 'z'.
--include xORyNOTz      # Matches tests containing either tag 'x' or 'y', but not tag 'z'.
--include xNOTyANDz     # Matches tests containing tag 'x', but not tags 'y' and 'z'.

,他们需要指定 使用小写字母,以避免意外操作符用法:

--include port          # Matches tests containing tag 'port', case-insensitively
--include PORT          # Matches tests containing tag 'P' or 'T', case-insensitively
--exclude handoverORportNOTnotification

请注意

运营商在2.8.4机器人框架。

环境变量

,分别。 选项和它们的值 定义为一个空格分隔的列表,他们被放置在任何面前 明确的在命令行选项。 主要的用例 环境变量是全球某些选项的默认值设置 避免需要重复他们每次运行测试或使用室内可容纳。

export ROBOT_OPTIONS="--critical regression --tagdoc 'mytag:Example doc with spaces'"
robot tests.robot
export REBOT_OPTIONS="--reportbackground green:yellow:red"
rebot --name example output.xml

请注意

环境 变量是在机器人框架2.8.2补充道。

可能周围有空间值的引用 2.9.2是新的机器人框架。

测试结果

命令行输出

最明显的测试执行的输出中显示的输出 命令行。 所有执行测试套件和测试用例,以及 他们的状态,在实时显示。 下面的例子显示了 输出执行一个简单的测试套件只有两个测试用例:

==============================================================================
Example test suite
==============================================================================
First test :: Possible test documentation                             | PASS |
------------------------------------------------------------------------------
Second test                                                           | FAIL |
Error message is displayed here
==============================================================================
Example test suite                                                    | FAIL |
2 critical tests, 1 passed, 1 failed
2 tests total, 1 passed, 1 failed
==============================================================================
Output:  /path/to/output.xml
Report:  /path/to/report.html
Log:     /path/to/log.html

从机器人Framework 2.7,还有一个通知在控制台上 每当一个顶级关键词在一个测试用例结束。 如果使用一个绿点 关键字传递和红色F如果失败了。 这些标记都写完 线,它们覆盖的测试状态当测试结束。 编写标记是禁用如果控制台输出重定向到一个文件中。

生成的输出文件

返回代码

失败,返回码为0。 下表列出了所有可能的返回代码。

可能的返回码
钢筋混凝土 解释
0 所有关键测试通过。
1 - 249 返回的关键测试失败了。
250年 250或更多关键的失败。
251年 帮助或版本信息打印出来。
252年 无效的测试数据或命令行选项。
253年 测试执行由用户停止。
255年 意想不到的内部错误。

变量。 如果你使用一些外部工具来运行测试,咨询了 文档如何返回代码。

命令行选项。 这可能是有用的, 在持续集成服务器的后处理的结果 需要在测试执行的整体状态可以确定。

请注意

在执行期间的错误和警告

。 下面的示例说明了如何在日志文件错误和警告的样子。

20090322 19:58:42.528 错误 错误文件的/ home /机器人/测试。 机器人在表的设置在第二行元素:资源文件的资源。 机器人”并不存在
20090322 19:58:43.931 警告 关键字“SomeLibrary。 关键字的例子是弃用。 使用关键字的其他关键字。

复杂字符转义

选项可以指定在纯文本格式。 这两个 在执行测试时,当这些机制工作 后处理输出,以及一些外部支持 工具有相同或相似的功能。

是字符串来逃避它。 字符,可以 逃下表中列出:

可逃
字符 名称使用 字符 名称使用
& amp ( paren1
7月 ) paren2
@ % 百分比
\ bslash |
: 结肠 吗? 追求
, 逗号
{ curly1 ; semic
} curly2 / 削减
美元 美元   空间
! exclam ( square1
> gt ] square2
# 哈希 * 明星
< lt    

:

--escape space:_ --metadata X:Value_with_spaces
-E space:SP -E quot:QU -E comma:CO -E exclam:EX -v VAR:QUHelloCOSPworldEXQU

请注意,所有给定的命令行参数,包括路径测试 数据,逃脱了。 因此需要转义字符序列 仔细选择。

参数文件

参数文件允许将所有或一些命令行选项和参数 到外部文件中,他们会读。 这可以避免的问题 字符在命令行上是有问题的。 如果大量的选项或 还需要参数,参数文件防止命令上使用 命令行增长太长了。

选项 以及其他可能的命令行选项。

参数文件的语法

参数文件可以包含命令行选项和路径的测试数据, 每行一个选项或数据源。 短期和长期支持选项, 但后者建议,因为他们更容易理解。 参数文件可以包含任何字符没有逃离,但空间 的开始和结束线将被忽略。 此外,空行 线从一个散列马克(#)被忽略:

--doc This is an example (where "special characters" are ok!)
--metadata X:Value with spaces
--variable VAR:Hello, world!
# This is a comment
path/to/my/tests

在上面的例子中选项和它们的值之间的分隔符是一个单身 空间。 在机器人框架2.7.6和更新可以使用一个平等 号(=)或任何数量的空间。 作为一个例子,以下三行 相同:

--name An Example
--name=An Example
--name       An Example

如果参数文件包含非ascii字符,他们必须保存使用 utf - 8编码。

使用参数文件

选项多次甚至递归地:

robot --argumentfile all_arguments.robot
robot --name Example --argumentfile other_options_and_paths.robot
robot --argumentfile default_options.txt --name Example my_tests.robot
robot -A first.txt -A second.txt -A third.txt tests.robot

从标准输入读取参数文件

可以用来读参数 标准输入流,而不是一个文件。 这可能是有用的在生成 参数的脚本:

generate_arguments.sh | robot --argumentfile STDIN
generate_arguments.sh | robot --name Example --argumentfile STDIN tests.robot

得到帮助和版本信息

。 这些文本有一个简短的概述和帮助 简要解释可用的命令行选项。

。 这些信息还包含Python 或Jython平台版本和类型:

$ robot --version
Robot Framework 3.0 (Jython 2.7.0 on java1.7.0_45)

C:\>rebot --version
Rebot 3.0 (Python 2.7.10 on win32)

创建启动脚本

测试用例通常是由一个连续的自动执行 集成系统或其他机制。 在这种情况下,有一个 需要启动测试执行的脚本,并可能 也为后期处理输出。 类似的脚本也 手动运行测试时有用,特别是大量的 命令行选项或设置测试环境需要 复杂。

在类unix环境中,shell脚本提供了一个简单但强大的 创建自定义的启动脚本的机制。 Windows批处理文件 也可以使用,但他们更有限,经常更吗 复杂。 一个独立于平台的替代方法是使用Python或 其他一些高级编程语言。 不管 语言,建议使用长的选项名称,因为 他们比短的名字更容易理解。

在第一个例子中,相同的web测试执行不同 浏览器和结果相结合。 这与外壳是很容易的 脚本,因为实际上你只是所需的命令列表 另一个问题:

#!/bin/bash
robot --variable BROWSER:Firefox --name Firefox --log none --report none --output out/fx.xml login
robot --variable BROWSER:IE --name IE --log none --report none --output out/ie.xml login
rebot --name Login --outputdir out --output login.xml out/fx.xml out/ie.xml

必须使用运行时他们从另一个批处理 文件。 否则执行第一个批处理文件时将结束 完成了。

@echo off
call robot --variable BROWSER:Firefox --name Firefox --log none --report none --output out\fx.xml login
call robot --variable BROWSER:IE --name IE --log none --report none --output out\ie.xml login
call rebot --name Login --outputdir out --output login.xml out\fx.xml out\ie.xml

在开始测试之前执行。 在这些 例子,启动脚本要求路径执行测试 数据作为参数给出。 也可以使用命令行 自由选择,即使一些选项已经被确定的 脚本。 所有这些都是使用bash相对比较直接:

#!/bin/bash

cp=.
for jar in lib/*.jar; do
    cp=$cp:$jar
done
export CLASSPATH=$cp

robot --ouputdir /tmp/logs --suitestatlevel 2 $*

实现这种使用Windows批处理文件稍微复杂一些。 的 困难的部分是设置变量包含所需的罐子里 循环,因为出于某种原因,这是不可能的助手 函数。

@echo off

set CP=.
for %%jar in (lib\*.jar) do (
    call :set_cp %%jar
)
set CLASSPATH=%CP%

robot --ouputdir c:\temp\logs --suitestatlevel 2 %*

goto :eof

:: Helper for setting variables inside a for loop
:set_cp
    set CP=%CP%;%1
goto :eof

修改Java启动参数

有时使用Jython有需要修改Java启动参数。 最常见的用例是增加JVM最大内存大小 默认值可能没有足够的用于创建报告和日志的时候 输出是非常大的。 有两个简单的方法来配置JVM选项:

  1. 环境变量。 可以永久 在操作系统级或每执行一个自定义的启动脚本。

  2. 直接:

    jython -J-Xmx1024m -m robot tests.robot
    

调试问题

因为他们也需要吗 其他的日志消息和他们显示哪些关键字真的失败了。

,需要加强。 在这种情况下运行 相同的手动测试,如果可能的话,也可以揭示更多的信息 关于这个问题。

部分 日志文件。 例如,一个测试库导入失败的错误 可以很好地解释了为什么一个测试失败了由于失踪的关键字。

水平,这些信息时都是非常宝贵的 问题是在一个单独的库关键字。

任何非空值。 这个功能是 2.9.2新机器人框架。

或其他地方。

使用Python调试器(pdb)

从Python标准模块 图书馆设置断点和交互式调试运行测试。 典型的调用方式pdb插入

import pdb; pdb.set_trace()

在位置你想进入调试器不能正常工作 与机器人框架,标准输出流 在关键字执行重定向。 相反,您可以使用以下:

import sys, pdb; pdb.Pdb(stdout=sys.__stdout__).set_trace()

相关文章:

  • 2021-08-18
  • 2021-09-06
  • 2021-06-24
  • 2021-09-05
  • 2021-07-04
  • 2022-02-13
  • 2021-06-19
  • 2021-10-19
猜你喜欢
  • 2022-01-29
  • 2022-02-21
  • 2022-02-25
  • 2021-07-02
  • 2021-11-28
  • 2021-09-10
  • 2022-02-04
相关资源
相似解决方案