如何使用机器人框架获取变量来休息 API

How to get variable with robot framework to rest API

我有一个测试套件

Library     RequestsLibrary
Library     JSONLibrary
Library   OperatingSystem


*** Variable ***
${base_url}    https://api.sportpartnerxxx.vn/v1
${identity_URL}    https://identity.sportpartnerxxx.vn

*** Test Cases ***

Login
    ${body}=    Create Dictionary    client_id=sportpartner-mobile-app    client_secret=ifd-sportpartner-secret-2021-mobile-app    grant_type=password    username=abc    password=123456
    ${header}=    create dictionary  content_type=application/x-www-form-urlencoded
    ${response}=    Post    ${identity_URL}/connect/token    headers=${header}    data=${body}
    ${token}=    Set Variable    Bearer ${response.json()["access_token"]}
    Status Should Be    200


Refresh token
    ${body}=    Create Dictionary    client_id=sportpartner-mobile-app    client_secret=ifd-sportpartner-secret-2021-mobile-app    grant_type=password    refresh_token=${refresh_token}
    ${header}=    create dictionary  content_type=application/x-www-form-urlencoded    Authorization=&{token}
    ${response}=    Post    ${identity_URL}/connect/token    headers=${header}    data=${body}
    Status Should Be    200

我想将 Login 测试用例的 ${token} 变量添加到 Refresh token 测试用例的 Authorization 值中。但它失败了。 有人帮帮我吗?

您可以尝试使用
保存变量 设置套件变量
然后在您的其他测试用例中访问它

https://robotframework.org/robotframework/latest/libraries/BuiltIn.html#Set%20Suite%20Variable

案例中创建的变量仅在案例中及其调用的关键字中是局部的(可见的);案例结束后,var 将被删除。
如果您希望在后续案例中可以访问它,则需要扩展其范围 - 使用它调用 Set Suite VariableSet Global Variable - 这将使它可用于任何其他套件 运行在这个之后。

不过,这有一个很大的缺点——您要添加对案例顺序的依赖; “登录”必须始终 运行 拳头 - 并且要成功,以便“刷新令牌”起作用。
这就是为什么这通常是通过关键字完成的(在案例设置等中调用)。

我建议您阅读用户指南中的变量范围 - http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#using-set-test-suite-global-variable-keywords