机器人框架:如何知道是否正在从setup / test / teardown执行测试库功能

时间:2014-09-15 15:37:58

标签: python automation robotframework

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

我在设置部分,测试部分和拆卸部分中将我的RF套件中的相同功能“运行测试例程”称为RF功能,如下所示

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

现在,当在RF python库中调用此run_test_routine()时,如何知道它的调用位置? 即从安装部分,测试部分或拆解部分调用它?

我想强调一点,这是RF库的python代码中所必需的,而不是基于文本的RF套件

1 个答案:

答案 0 :(得分: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来告诉它上下文。