Python Robot框架:如何知道测试库函数是否正在从setup/test/teardown执行

Python Robot框架:如何知道测试库函数是否正在从setup/test/teardown执行,python,automation,robotframework,Python,Automation,Robotframework,我有自己的测试库函数run\u test\u routine() 我在设置部分、测试部分和拆卸部分调用与我的RF套件相同的函数“运行测试例程”,如下图所示 my RF test case [Setup] Run Test Routine setup_input Run Test Routine test_input [Teardown] Run Test Routine teardown_input 现在,当这个run_test_例程()在

我有自己的测试库函数run\u test\u routine()

我在设置部分、测试部分和拆卸部分调用与我的RF套件相同的函数“运行测试例程”,如下图所示

my RF test case
    [Setup]    Run Test Routine    setup_input
    Run Test Routine    test_input
    [Teardown]    Run Test Routine    teardown_input
现在,当这个run_test_例程()在RF python库中被调用时,我如何知道它是从哪里调用的? i、 是从设置部分、测试部分还是拆卸部分调用的


我想强调的是,这在RF库的python代码中是必需的,而不是在基于文本的RF套件中,我不相信有可靠的方法来确定调用关键字的上下文。我唯一能想到的就是检查堆栈,看看是否调用了内部例程
\u run\u setup
\u run\u 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

我认为更好的解决办法是有三个关键字。保留现有的一个,然后再创建两个名为
运行设置测试例程
运行拆卸测试例程
。除了您需要执行的任何特殊处理之外,它们还可以调用
运行测试例程
函数。或者,他们可以简单地将一个额外的参数传递给
运行测试例程
,告诉它上下文。

找到了一种方法,通过使用${Test STATUS}自动变量来检查它是否为拆卸,但找不到如何检查执行是否从安装程序开始。非常感谢,回溯解决方案尚未决定是使用它还是使用自定义设置/拆卸解决方案