【问题标题】:Using headers with the Robot Framework requests library's 'Get Request' Keyword将标头与 Robot Framework 请求库的“获取请求”关键字一起使用
【发布时间】:2019-03-03 05:06:55
【问题描述】:

我想使用请求库测试 API。

我的代码如下:

*** Settings ***
Documentation     Read API Testcase
Library           RequestsLibrary

*** Variables ***
${headers}        {'content-type': 'application/json', 'authorizationFlag':'N'}

*** Test Cases ***
Read API
    Create Session    CLM    http://172.20.33.224:8080/clm-reg/rest/dataservice/1/CLM/1
    ${resp}    Get Request    CLM    /RegistrationRequestDetails/json/583d8b14498e021b2f93a773    headers = ${headers} 
    Log to console    ${resp}

我得到了错误:

AttributeError: 'unicode' object has no attribute 'items'

我发现我传递的标头有问题。

当我在互联网上搜索时,我发现我传递标头值的方式是正确的。

请任何人帮助我。

谢谢 萨拉达

【问题讨论】:

    标签: robotframework


    【解决方案1】:

    我已将您的标题行更改为应该可以使用的内容。让我们知道您是否取得了任何成功或遇到了什么其他问题。

    *** Variables ***
    ${headers}       Create Dictionary    Content-Type    application/json    authorisationFlag    N 
    

    【讨论】:

    • 谢谢Shicky,它有效,但变化不大。而不是在变量下,我在脚本中创建如下:*** Test Cases *** Read API Create Session CLM http://172.20.33.224:8080/clm-reg/rest/dataservice/1/CLM/1 &{headers} Create Dictionary Content-Type=application/json authorizationFlag=N ${resp} Get Request CLM /RegistrationRequestDetails/json/583d8b14498e021b2f93a773 headers=${headers} Log to console ${resp}
    • 这行得通,但我更喜欢指定 Suite Setup 关键字,您可以在其中使用 Evaluate(Pythonic)将 JSON 转换为 dict。请记住在您希望可见的任何 var 上使用 Set Suite Variable
    • 我理解 MarkHu 的逻辑,在某些测试套件中,我们发送不同类型的请求并使用不同的标头,因此更愿意将其保留在测试用例中。取决于我猜的用例!
    【解决方案2】:

    问题是您的 ${headers} var 只是一个字符串,而不是字典。 JSON 在这种情况下很棘手。在 RF 中创建字典有多种选择。

    • RF 的Create Dictionary 关键字
    • Python 的 json.loads(str) 作为 lib 调用
    • RF 的Evaluate 关键字...

    【讨论】:

      【解决方案3】:

      您可以像这样使用内置变量字典类型:

          Set Test Variable    &{HEADERS}       Content-Type=application/json    authorisationFlag=N    Accept=*/*    Cache-Control=no-cache
      

      然后将其作为一个变量调用,该变量作为一个 dict 传播到您的 headers 变量中:

          ${resp}    Post Request   api-encoder    /api-token-auth/    data=${DATA}    headers=${HEADERS}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-09
        • 1970-01-01
        • 2015-10-29
        • 2012-09-02
        • 1970-01-01
        • 2016-03-21
        • 1970-01-01
        相关资源
        最近更新 更多