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

Posted

技术标签:

【中文标题】如何使用机器人框架获取变量以休息 API【英文标题】:How to get variable with robot framework to rest 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 值。但它失败了。 有人帮我吗?

【问题讨论】:

【参考方案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 秒内回答,几率是多少,呵呵 :) 效果很好,非常感谢

以上是关于如何使用机器人框架获取变量以休息 API的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SharePoint 框架 Web 部件中调用 SharePoint 搜索 API 以获取最近的新闻?

如何发送长列表以与休息控制器一起使用

如何从 API 获取结果以存储为全局变量? [复制]

如何在没有休息调用的情况下将 php json 变量分配给 angular?

如何使用机器人框架和 python 在不滚动的情况下获取所有匹配的元素?

如何从远程机器访问 REST API?