【问题标题】:POST Request in API Testing using ROBOT Framework使用 ROBOT 框架进行 API 测试中的 POST 请求
【发布时间】:2021-11-27 06:04:29
【问题描述】:

大家好,我想在 ROBOT Framework 中发布以下格式作为输入。

{
    "Description": "School",
    "Details": [
    {
      "name": "Test1",
      "Surname": "XYZ"
    },
    {
      "name1": "Test2",
      "Surname2": "ABC"
    }
    ]
}

但我收到以下错误

body={"Error":"module 'jsonschema._utils' has no attribute 'types_msg'"}

下面是我的代码

${tag_1} =  create dictionary        name="Test1"     value"XYZ"
      ${tag_2} =  create dictionary        name="Test2"     value"ABC"
      ${body} =  create list        Description="School"      Details=[$tag_1,$tag_2]
      ${header}=  create dictionary   Authorization=%{TEMP_TOKEN}   content-Type=application/json
     ${create_student}=  post On Session  ABCDE    /input   json=${body}     headers=${header}       expected_status=200

【问题讨论】:

  • 字符串不需要引号。 name=Test1 就足够了,您的引用可能会在以后引起问题。
  • 什么是值“XYZ”?它作为字典键/值对无效,并且与您的 json 不匹配

标签: api unit-testing robotframework


【解决方案1】:

在我看来存在一些问题 - 主要是,您尝试将 json 存储在数组中,而不是对象中,并且您没有转换为 JSON。

键值周围还有双引号,值“XYX”和值“ABC”的无效键/值也与您的示例不匹配,因为它应该是“姓氏”

下面的一些示例更改:

# Name and Surname Objects - Updated to remove double quotes and match the provided json with "Surname" instead of "value"
${tag_1}  Create Dictionary  name=Test1  Surname=XYZ
${tag_2}  Create Dictionary  name=Test2  Surname=ABC

# Details List / Json Array
@{details}  Create List  ${tag_1}  ${tag_2}

# Body - Fixed so it's an object not an array
&{body}  Create Dictionary  
...      Description=School
...      Details=${details}

# Convert the body to JSON
${body}  Evaluate  json.dumps(${body})  json

输出:

{"Description": "School", "Details": [{"name": "Test1", "Surname": "XYZ"}, {"name": "Test2", "Surname": "ABC"}]}

【讨论】:

    猜你喜欢
    • 2016-03-03
    • 2022-07-20
    • 2016-05-05
    • 2018-12-20
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 2015-06-01
    相关资源
    最近更新 更多