Robotframework Robot框架的测试模板不能使用变量

Robotframework Robot框架的测试模板不能使用变量,robotframework,Robotframework,我在使用robotframework模板时遇到了一些问题,如何将变量传递给模板? 这是我的密码: *** Keywords *** re-random-value ${random int} = Evaluate random.randint(1, 5) [Return] ${random-num} *** Test Cases *** test1 [Template] test template re-random-value #

我在使用robotframework模板时遇到了一些问题,如何将变量传递给模板? 这是我的密码:

*** Keywords ***
re-random-value
    ${random int} =    Evaluate    random.randint(1, 5)
    [Return]    ${random-num}


*** Test Cases *** test1
    [Template]    test template
    re-random-value   # random-num is return value from keywords re-random-value


*** Keywords ***
   test template
    [Arguments]    ${random-num}
    log    ${random-num}

当我运行测试用例
test1
时,结果是
re random value
,而不是我预期的关键字
re random value
返回的值数。Robot Framework的文档说明如下:

。。。带有模板的测试用例只包含 模板关键字

在测试模板的上下文中,参数永远不能是关键字,示例中的方法不会按原样工作

假设每行/测试用例中的关键字可能会发生变化,可以构造一个中间关键字,将关键字的名称作为参数并执行它。在下面的示例更新版本中,就是这样做的。使用FOR循环生成多个值

*** Test Cases *** 
test1
    [Template]    test template
        FOR    ${index}    IN RANGE    1    5    
            re-random-value   # random-num is return value from keywords re-random-value
        END

*** Keywords ***
test template
    [Arguments]    ${keyword}
    ${value}    Run Keyword    ${keyword}
    Log To Console    ${value}

re-random-value
    ${random int} =    Evaluate    random.randint(1, 5)    modules=random
    [Return]    ${random int}
结果(记住数值的随机性):


“假设一个参数永远不能是一个关键字”-这不是真的。关键字可以作为参数传递给其他关键字。例如,您将关键字作为参数传递给
Run关键字
关键字。我认为您仍然不正确。我可以创建一个接受关键字作为参数的测试模板。事实上,你的例子不正说明了这一点吗?您有一个名为
${keyword}
的参数。该示例提供了一个值,然后在模板关键字中将其解释为值参数。我对这个问题的解释是,called关键字返回一个由模板测试用例直接调用的值。技术上不同,但功能上相似。
==============================================================================
test1                                                                 1
3
2
3
| PASS |
------------------------------------------------------------------------------