如何使用机器人框架获取变量来休息 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 Variable
或 Set Global Variable
- 这将使它可用于任何其他套件 运行在这个之后。
不过,这有一个很大的缺点——您要添加对案例顺序的依赖; “登录”必须始终 运行 拳头 - 并且要成功,以便“刷新令牌”起作用。
这就是为什么这通常是通过关键字完成的(在案例设置等中调用)。
我建议您阅读用户指南中的变量范围 -
http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#using-set-test-suite-global-variable-keywords
我有一个测试套件
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 Variable
或 Set Global Variable
- 这将使它可用于任何其他套件 运行在这个之后。
不过,这有一个很大的缺点——您要添加对案例顺序的依赖; “登录”必须始终 运行 拳头 - 并且要成功,以便“刷新令牌”起作用。
这就是为什么这通常是通过关键字完成的(在案例设置等中调用)。
我建议您阅读用户指南中的变量范围 - http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#using-set-test-suite-global-variable-keywords