【问题标题】:Robot Framework : How to know whether a test library function is being executed from setup/test/teardownRobot Framework:如何知道是否正在从 setup/test/teardown 执行测试库函数
【发布时间】:2014-09-16 01:28:18
【问题描述】:

我有自己的测试库函数run_test_routine()

我在设置部分、测试部分和拆卸部分中调用我的 RF 套件中的 same 函数“运行测试例程”作为 RF 函数,就像这样

my RF test case
    [Setup]    Run Test Routine    setup_input
    Run Test Routine    test_input
    [Teardown]    Run Test Routine    teardown_input

现在,当这个 run_test_routine() 在 RF python 库中被调用时,我如何知道它是从哪里调用的? 即它是从 Setup 部分、test 部分还是 Teardown 部分调用的?

我想强调的是,这是在 RF 库的 python 代码中需要的,而不是在基于文本的 RF 套件中

【问题讨论】:

    标签: python automation robotframework


    【解决方案1】:

    我认为没有可靠的方法来确定调用关键字的上下文。我唯一能想到的就是检查堆栈以查看是否调用了内部例程_run_setup_run_teardown。这很容易在未来版本的机器人中被破坏,因为它取决于一些私有内部函数的名称。

    如果你真的想这样做,它可能看起来像这样:

    import traceback
    def _is_setup():
        for tb in reversed(traceback.extract_stack()):
            if (tb[2] == "_run_setup"):
                return True
        return False
    
    def _is_teardown():
        for tb in reversed(traceback.extract_stack()):
            if (tb[2] == "_run_teardown"):
                return True
        return False
    

    我认为更好的解决方案是使用三个关键字。保留你拥有的那个,然后再创建两个名为Run Setup Test RoutineRun Teardown Test Routine。除了您需要做的任何特殊处理之外,它们都可以调用Run Test Routine 函数。或者,他们可以简单地向Run Test Routine 传递一个额外的参数来告诉它上下文。

    【讨论】:

    • 通过使用 ${TEST STATUS} 自动变量找到了一种检查其是否为拆卸的方法,但找不到如何检查执行是否从 setup 开始。非常感谢这个回溯解决方案尚未决定是使用它还是使用自定义设置/拆卸解决方案
    猜你喜欢
    • 2018-02-09
    • 2015-09-09
    • 1970-01-01
    • 2013-09-24
    • 2014-11-12
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    相关资源
    最近更新 更多