如何解决如果链接不存在,如何跳过测试用例并转到机器人框架中的下一个链接
场景: 主页中有 5 个链接: 链接 1 链接 2 链接 3 链接 4 链接 5
以上每个链接都是单独的测试用例,所以总共有5个测试用例。
所以我需要编写一个机器人框架测试用例,它可以动态地适用于所有站点,比如 1 个站点可能有 3 个链接,只有一些站点拥有所有 5 个链接。因此,如果该 lisk 不存在,则就像跳过特定的测试用例一样。
*** Keywords ***
Go to Manage Client Reports
Click Link link:Manage Client Reports
谁能帮忙。
解决方法
在即将到来的 Robot Framework Release 4.0 中,将引入新的测试状态 skipped
。以下是有关发布的简要状态:
逾期 27 天已完成 87%
主要发布专注于添加跳过状态 (#3622),IF/ELSE (#3074) 和增强侦听器 API (#3296 和 #3538)。最后一个专业 发布以支持 Python 2。
所以它现在可以随时准备就绪。
这就是您可以拥有的New SKIP
status #3622。将有一个 Skip If
和一个 Skip
关键字以及更多要使用的关键字。
如何跳过测试
将会有多种方式:
- 库关键字可用于标记要跳过的单个测试的特殊异常。另见#3685。
- 利用上述异常的内置关键字 Skip(或 Skip Test 和 Skip Task)。
- 内置 keyowrd Skip If 根据条件跳过。
- 在套件设置中使用跳过异常时,套件中的所有测试都将被跳过。
- 命令行选项 --skip 无条件跳过基于标签的测试。类似于 --exclude 但跳过的测试显示在日志/报告中 具有跳过状态并且没有完全退出执行。
- 命令行选项 --skiponfailure 如果测试失败则跳过测试。与当前的 --noncritical 效果类似。
关键性怎么样
正如在 #2087 中已经讨论过的,跳过状态是非常相似的功能 比机器人当前的临界概念。有很多人 想要两者兼而有之,但我认为这不是一个好主意 相信在添加跳过时最好删除关键性。 单独的问题 #3624 涵盖了消除关键性并在 更多详情。颜色
跳过状态需要特定颜色来匹配当前通过(绿色)和 失败(红色)。黄色感觉像是一个有红绿灯的好人选 比喻,但我对其他想法持开放态度,我们可能会改变 其他颜色也是如此。可能也应该使颜色可配置- 目前仅报告背景颜色支持。
上面提到的报表背景颜色也需要一些思考。 目前它是绿色或红色,但添加了跳过状态,我们 也可以使用黄色或我们决定使用的任何跳过颜色。 列出了可以使用不同颜色的不同场景 下面(假设绿色/黄色/红色方案):
- 所有测试均通过。这是天然绿色。
- 任何测试都失败了。这是自然的红色。
- 跳过任何测试(没有失败)。这可能应该是绿色,但也可能是黄色。
- 已跳过所有测试。这可能是黄色的。也可能是绿色的,但如果所有测试都是黄色的,那就有点奇怪了。
根据您的截止日期,您可能无法等待此版本,但了解这一点是件好事。
,有一个高级解决方案,您可以在其中生成测试用例运行时。为此,您必须实现一个小的 library that also acts as a listener。通过这种方式,它可以有一个 start_suite
方法被调用,并且它将套件作为 Python 对象 robot.running.model.TestSuite
获取。然后您可以将此对象与 Robot Framework's API 一起使用来创建新的测试用例。以下想法的灵感来自并基于此博客文章:Dynamically create test cases with Robot Framework。
DynamicTestLibrary.py:
from robot.running.model import TestSuite
class DynamicTestLibrary(object):
ROBOT_LISTENER_API_VERSION = 3
ROBOT_LIBRARY_SCOPE = 'GLOBAL'
ROBOT_LIBRARY_VERSION = 0.1
def __init__(self):
self.ROBOT_LIBRARY_LISTENER = self
self.top_suite = None
def _start_suite(self,suite,result):
self.top_suite = suite
self.top_suite.tests.clear() # remove placeholder test
def add_test_case(self,keyword,*args):
tc = self.top_suite.tests.create(name=keyword)
tc.keywords.create(name=keyword,args=args)
globals()[__name__] = DynamicTestLibrary
Robot Framework 4.0 更新
由于在 4.0 版本中进行了向后不兼容的更改 (Running and result models have been changed),如果您使用的是 4.0 以上的版本,add_test_case
函数应更改如下。
def add_test_case(self,name,*args):
tc = self.top_suite.tests.create(name=name)
tc.body.create_keyword(name=keyword,args=args)
您可以在套件设置中使用此库,您可以在其中检查存在哪些链接并为可用链接添加测试用例。
test.robot
*** Settings ***
Library DynamicTestLibrary
Suite Setup Check Links And Generate Test Cases
*** Variables ***
#@{LINKS} Manage Clients # test input 1
@{LINKS} Manage Clients Manage Client Hardware # test input 2
#@{LINKS} Manage Clients Manage Client Hardware Manage Client Reports # test input 3
*** Test Cases ***
Placeholder
[Documentation] Placeholder test that will be removed during execution.
No Operation
*** Keywords ***
Check Links And Generate Test Cases
FOR ${link} IN @{LINKS}
DynamicTestLibrary.Add Test Case Go to ${link}
END
Go to Manage Client Reports
Log Many Click Link link:Manage Client Reports
Go to Manage Client Hardware
Log Many Click Link link:Manage Client Hardware
Go to Manage Clients
Log Many Click Link link:Manage Clients
Go to ${link}
将给出适当的关键字名称,该名称将在具有相同名称的测试用例中调用。您可以通过每个示例输入列表检查执行的测试数量是否与列表长度相等。
输出如下:
# robot --pythonpath . test.robot
==============================================================================
Test
==============================================================================
Go to Manage Clients | PASS |
------------------------------------------------------------------------------
Go to Manage Client Hardware | PASS |
------------------------------------------------------------------------------
Test | PASS |
2 critical tests,2 passed,0 failed
2 tests total,0 failed
==============================================================================
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。