如何使用机器人框架获取变量以休息 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 Variable
或 Set 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 以获取最近的新闻?
如何在没有休息调用的情况下将 php json 变量分配给 angular?