如何在机器人框架中访问套件中的所有测试

时间:2015-10-02 11:49:40

标签: robotframework

在执行期间,是否有任何可能的方法来访问当前测试套件中所有测试执行的列表。在我的例子中,我有一个包含20个测试用例的脚本。他们每个人都有一些标签。启动Robot时,我可以要求它仅使用特定标签执行测试。我想知道机器人从我的脚本中选择了哪个测试。我知道这样的信息是提供给听众的。我可以在执行期间在套件设置中访问它吗?

由于 Pawel R.

3 个答案:

答案 0 :(得分:1)

今天,您还可以创建一个小型library that will act as a listener,它可以在运行时检查已选择了哪些测试。我在这里使用Robot Framework 3.1.2。

基本上需要两件事

  1. 来自listener APIstart_suite方法。该方法将在每个套件开始时调用,直到返回明确的False为止。调用时,称为attributes的参数将传递给它。此参数是一个字典,具有以下键/值对,"tests: Names of the tests this suite has as a list. Does not include tests of the possible child suites."
  2. 将记录所有测试名称的关键字,可以在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

enter image description here

答案 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之后添加更多内容。