Python unittest框架的Robot Framework测试套件
项目描述
Robot Framework的Python unittest测试套件
这是一个实验性包,可以将Robot Framework测试套件包装成Python unittest套件,以便将Robot Framework测试作为plone.testing分层测试套件运行。
import unittest
from plone.testing import layered
from robotsuite import RobotTestSuite
from my_package.testing import ACCEPTANCE_TESTING
def test_suite():
suite = unittest.TestSuite()
suite.addTests([
layered(RobotTestSuite('mysuite.txt'),
layer=ACCEPTANCE_TESTING),
])
return suite
RobotTestSuite 将 Robot Framework 测试套件拆分为独立的 unittest 测试用例,以便在解析给定 Robot Framework 测试套件时,为每个测试套件中的每个测试用例运行一次 Robot。因此,每个 Robot 将为每个测试生成一个单独的测试报告。每个报告将具有它自己的文件夹,这些文件夹递归地反映了给定测试套件的结构。
RobotTestSuite 将测试包裹到 unittest 测试套件中的方式与 doctest-module 的 DocTestSuite 执行包裹的方式类似。有关可能的常见参数(例如,如何从不同包传递测试套件),请参阅 DocTestSuite 的文档。
此包背后的主要动机是使 Robot Framework 在测试 Plone 时支持现有的测试固定和测试隔离。但是,这应该有助于任何想要使用 Robot Framework 与 zope.testrunner 或其他 Python unittest 兼容测试运行器的用户。
如果这对您有帮助,请在此处贡献: http://github.com/collective/robotsuite/
从环境变量设置 robot 变量
Robot Framework 支持从命令行覆盖测试变量,当以 robotsuite-wrapped 的方式运行测试时不可用。这就是为什么 robotsuite 支持将变量作为环境变量设置,以便每个以 ROBOT_ 为前缀的环境变量都会映射到相应的测试变量,而不包含 ROBOT_ 前缀。
设置 zope.testrunner 级别
zope.testrunner 支持使用级别注释测试套件,以避免在不希望的情况下运行缓慢的测试。
def test_suite():
suite = unittest.TestSuite()
suite.addTests([
layered(RobotTestSuite('mysuite.txt'),
layer=ACCEPTANCE_TESTING),
])
suite.level = 10
return suite
重试失败的测试
您可以重试失败的测试。这对于不可靠的 robot 浏览器测试很有用。警告:这可能不适合所有类型的测试。例如,在第一次失败之前所做的任何更改可能仍然存在。
您可以通过两种方式启用重试
设置环境变量 ROBOTSUITE_RETRY_COUNT=X。
通过将 retry_count=X 传递给 RobotTestSuite 调用来覆盖此设置。
默认值为零:不重试。重试计数 不包括 原始尝试。
def test_suite():
suite = unittest.TestSuite()
suite.addTests([
robotsuite.RobotTestSuite('test_example.robot', retry_count=3),
robotsuite.RobotTestSuite('test_variables.robot'),
robotsuite.RobotTestSuite('test_setups', retry_count=2)
])
return suite
将测试结果追加到现有测试报告中
通过 robotsuite 运行 Robot Framework 时,其测试报告将创建在当前工作目录中,文件名为 robot_output.xml、robot_log.html 和 robot_report.html。默认行为是覆盖现有的 robot_output.xml(以及由此生成的其他报告文件)。
要将来自单独测试运行的测试结果合并到同一测试报告中,请设置环境变量 ROBOTSUITE_APPEND_OUTPUT_XML=1 以防止 robotsuite 覆盖现有的测试结果,但始终追加到现有的 robot_output.xml。
过滤测试执行错误
设置环境变量 ROBOTSUITE_LOGLEVEL=ERROR 以从合并的测试报告中过滤低于给定日志级别(例如 ERROR)的所有顶级 测试执行错误。这对于当不必要的警告从测试代码泄漏到 Robot Framework 日志中很有用。
包括或跳过所有 RobotTestSuite 包装的测试
Robot Framework 通常与 Selenium2Library 结合使用,通过 Selenium 框架编写验收测试。然而,由于这些测试可能运行较慢,有时(例如在 CI 中)可能只想运行除了被 robotsuite 包裹的测试之外的所有测试,然后在稍后只运行被 robotsuite 包裹的测试。
这可以通过将自定义字符串注入到 robotsuite 包裹的测试名称中(使用 ROBOTSUITE_PREFIX 环境变量),然后使用该字符串过滤测试来实现。
例如,使用以下方式运行除了 robotsuite 包裹的测试之外的所有测试:
$ ROBOTSUITE_PREFIX=ROBOTSUITE bin/test --all -t \!ROBOTSUITE
反方向使用以下方式:
$ ROBOTSUITE_PREFIX=ROBOTSUITE bin/test --all -t ROBOTSUITE
复用其他包中的测试套件
有时,复用上游包中的验收测试来测试您稍作修改的包(例如,使用自定义主题)可能很有用。这可以通过为 RobotTestSuite 定义测试查找位置来实现,使用 package 关键字参数。
def test_suite():
suite = unittest.TestSuite()
suite.addTests([
layered(leveled(
robotsuite.RobotTestSuite('robot',
package='Products.CMFPlone.tests'),
), layer=PLONE_APP_MOSAIC_NO_PAC_ROBOT),
])
return suite
变更日志
2.3.2 (2023-09-09)
修复以支持子目录下的截图 / 图片 [datakurre]
2.3.1 (2022-05-23)
默认让测试成为关键。修复了 Plone 问题 3537。 [maurits]
2.3.0 (2022-05-02)
添加对 RF 4 和 RF 5 的支持 [Asko Soukka]
在 RF 4 或更高版本中取消对关键性的支持 [Asko Soukka]
恢复对 RF 3.2 的支持 [Asko Soukka]
2.2.1 (2020-02-14)
由于观察到 2.0.0 与 2.1.1 之间的回归,撤销对 Robot Framework 3.2b1 的支持 [datakurre]
2.1.1 (2020-02-13)
将作为通用 wheel 添加到发布中 [datakurre]
2.1.0 (2020-02-13)
添加对重试失败测试的可选支持。设置环境变量 ROBOTSUITE_RETRY_COUNT=X。或者通过将 retry_count=X 传递给 RobotTestSuite 调用来覆盖此设置。默认为零:不重试。重试计数 不包括 原始尝试。[maurits]
添加对 Robot Framework 3.2b1 的支持 [datakurre]
取消对 robotframework-python3 的要求,因为 robotframework 本身已经兼容 Python 3。[gforcada]
2.0.0 (2016-12-22)
不再支持 Python 2.6。[gforcada]
移除 unittest2 引用 [gforcada]
1.7.0 (2015-07-23)
添加对 Robot Framework 2.9 的支持 [datakurre]
1.6.1 (2014-10-01)
添加 ROBOTSUITE_LOGLEVEL 环境变量,用于在日志合并期间过滤文本执行错误 [datakurre]
1.6.0 (2014-06-29)
添加对 ROBOTSUITE_PREFIX-env 的支持,以将自定义字符串注入所有 robotsuite 测试名称中 [datakurre]
添加对机器人变量 UTF-8 的支持 [#6] [Tom Gross] [Vincent Fretin]
添加 Python 3.4 支持 [Vincent Fretin]
1.5.0 (2014-04-13)
恢复覆盖现有 robot_output.xml 的原始行为。设置环境变量 ROBOTSUITE_APPEND_OUTPUT_XML=1 将测试结果追加到现有的 robot_output.xml 中。[datakurre]
1.4.3 (2014-01-27)
修复不支持子套件的测试套件的错误 [datakurre]
1.4.2 (2013-11-22)
修复在 robotframework >= 2.8.0 时为没有测试的套件运行套件设置的错误 [datakurre]
1.4.1 (2013-10-13)
修复 1.4.0 中的回归,该回归删除了机器人测试用例中的相对路径名称 [datakurre]
修复 RobotTestCase 以足够模仿 DocTestCase,以便 plone.testing 可以为其设置 'layer' [datakurre]
修复将给定的测试 'setUp' 和 'tearDown' 方法正确设置为 instancemethods(这将破坏不接受 'self' 参数的现有方法)[datakurre]
1.4.0 (2013-06-19)
仅支持 roboframework >= 2.8。使用 robotsuite 1.3.x 与 robotframework 1.7.x [datakurre]
1.3.3 (2013-06-05)
修复支持自定义截图文件名和路径的错误 [fix #2] [datakurre]
1.3.2 (2013-06-03)
从功能测试中移除截图捕获 [datakurre]
1.3.1 (2013-06-03)
将 robotframework 锁定在 < 2.8rc1,因为 robotsuite 还未兼容 robotframework 2.8.x [datakurre]
1.3.0 (2013-04-09)
允许传递 critical/noncritical 参数,仅在测试是关键的条件下抛出 AssertionError [reinhardt]
1.2.2 (2013-04-08)
修复在合并测试报告时复制所有截图(而不仅仅是 selenium-screenshot*.png)的错误
1.2.1 (2013-03-08)
撤销设置默认的zope.testrunner级别,并支持通过环境变量ROBOTSUITE_LEVEL(例如:ROBOTSUITE_LEVEL=2)设置。
1.2.0 (2013-03-08)
覆盖测试套件__module__测试用例id()以支持collective.xmltestreport
添加对zope.testrunner测试套件级别的支持(默认值为2,以便轻松运行除了robot测试外的所有测试)
1.1.0 (2013-02-20)
行为更改,不再删除现有的robot_output.xml,而是始终将其与新的测试数据合并。robot_output.xml可以通过在测试之间手动删除它来重置。
1.0.4 (2013-02-19)
修复了从两个或更多独立测试套件合并测试报告的问题
1.0.3 (2013-02-18)
修复了示例测试,使其正确读取ZSERVER_PORT环境变量
1.0.2 (2013-02-09)
修复了替换测试报告文件夹名称中的空格
1.0.1 (2013-02-09)
在失败的测试前添加换行符
1.0.0 (2013-02-08)
停止在测试名称中替换空格为下划线
0.9.0 (2012-09-21)
添加将记录的错误注入到捕获的stdout中,以便在测试失败时与robot输出一起输出。
0.8.0 (2012-09-13)
添加从以ROBOT_-前缀的环境变量设置pybot CLI变量的支持。
0.7.0 (2012-09-11)
实现了对Robot Framework报告的自定义合并,以创建更好的连接测试报告并完全支持Jenkins的Robot Framework插件。
将(selenium-)屏幕截图复制到根测试目录,以便在Jenkins中更容易发布。
0.6.0 (2012-08-21)
修复了连接报告中的屏幕截图路径。
修复了测试名称,使其包含套件文件名而不是类名。
修复了在规范化测试名称中允许破折号。
0.5.0 (2012-07-23)
将robotframework测试标签作为测试字符串表示的一部分包含,以便可以通过标签过滤测试(例如,使用zope.testrunner)。
添加创建连接日志文件。
0.4.0 (2012-06-04)
修复了在测试用例执行实际的robot框架测试运行后更改每个测试方法的名称。
0.3.1 (2012-06-03)
更新了README。
0.3.0 (2012-06-03)
为测试启用了robotframework报告。每个测试套件和每个测试都将有自己的输出目录,递归。
0.2.0 (2012-06-02)
支持将目录作为(递归)套件。
0.1.0 (2012-05-30)
概念证明。
项目详情
下载文件
下载适合您平台文件的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。