【问题标题】:How to get variable with robot framework to rest API如何使用机器人框架获取变量以休息 API
【发布时间】:2022-01-02 15:56:03
【问题描述】:

我有一个测试套件

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 值。但它失败了。 有人帮我吗?

【问题讨论】:

    标签: robotframework


    【解决方案1】:

    变量 crated 在一个 case 中是本地的(可见的)只有在它里面,并且在它调用的关键字中;一旦案例结束,var 就会被删除。
    如果您希望在后续案例中可以访问它,您需要扩展其范围 - 调用 Set Suite VariableSet Global Variable - 这将使其可用于在此之后运行的任何其他套件。

    不过,这有一个很大的缺点——你增加了对案例顺序的依赖; “登录”始终必须先运行 - 并且要成功,这样“刷新令牌”才会起作用。
    这就是为什么这通常是通过关键字来完成的(在 case setup 等中调用)。

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

    【讨论】:

    • 很好的答案和深思熟虑的后果。
    • 谢谢,希望能提供帮助;想象一下在手机上打字:D
    【解决方案2】:

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

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

    【讨论】:

    • 一个 10 小时前的问题,我们在 20 秒内回答,几率是多少,呵呵 :)
    • 效果很好,非常感谢
    猜你喜欢
    • 2020-12-07
    • 2022-01-05
    • 2018-05-11
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    • 2022-10-05
    • 1970-01-01
    • 2018-05-04
    相关资源
    最近更新 更多