在执行期间,是否有任何可能的方法来访问当前测试套件中所有测试执行的列表。在我的例子中,我有一个包含20个测试用例的脚本。他们每个人都有一些标签。启动Robot时,我可以要求它仅使用特定标签执行测试。我想知道机器人从我的脚本中选择了哪个测试。我知道这样的信息是提供给听众的。我可以在执行期间在套件设置中访问它吗?
由于 Pawel R.
答案 0 :(得分:1)
今天,您还可以创建一个小型library that will act as a listener,它可以在运行时检查已选择了哪些测试。我在这里使用Robot Framework 3.1.2。
基本上需要两件事
start_suite
方法。该方法将在每个套件开始时调用,直到返回明确的False
为止。调用时,称为attributes
的参数将传递给它。此参数是一个字典,具有以下键/值对,"tests: Names of the tests this suite has as a list. Does not include tests of the possible child suites."
。Suite Setup
中使用。lib.py
from robot.api import logger
class lib(object):
ROBOT_LIBRARY_SCOPE = 'TEST SUITE' # define library scope
ROBOT_LISTENER_API_VERSION = 2 # select listener API
ROBOT_LIBRARY_VERSION = 0.1
def __init__(self):
self.ROBOT_LIBRARY_LISTENER = self # tell the framework that it will be a listener library
self.attributes = None
def _start_suite(self, name, attributes):
self.attributes = attributes
def log_suite_test_names(self):
for test in self.attributes['tests']:
logger.info(test)
globals()[__name__] = lib
test.robot
*** Settings ***
Library lib
Suite Setup log suite test names
*** Test Cases ***
Test 1
[Tags] A
No Operation
Test 11
[Tags] A B
No Operation
Test 111
[Tags] A B C
No Operation
Test 1111
[Tags] A B C D
No Operation
启动时的结果如下:robot --pythonpath . --include C test.robot
答案 1 :(得分:0)
您可以尝试使用
进行干跑--dryrun
当您查看report.html
时,这应该很好并且快速查看运行的内容http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#dry-run
答案 2 :(得分:0)
如果RF本身的使用不是强制性的,并且OS与* nix相关,我会选择
grep -E -B 1 "( )(tag|tag2)( |$)" test.robot
其中:
-E
启动grep的正则表达式语法,
-B 1
打印出一个相对于匹配的前一个字符串(它给出了我们的测试用例名称)。
您还可以添加|grep -v Tags
以仅保留包含案例名称的字符串。
如果您在[Tags]
部分与案例名称之间有其他内容,请稍微增加-B %index%
并在|grep -v
之后添加更多内容。