【问题标题】:Postman body: json array from a csv邮递员正文:来自 csv 的 json 数组
【发布时间】:2021-05-03 19:39:46
【问题描述】:

所以我有一个可能是一个超级简单的问题,但我无法理解它。 在发布请求正文中,我有一个大型 json 文件,格式为:

{
"order": {
"id":{{orderId}},
"numberofboxes":{{nbrboxes}},
"partnbrs [
{ 
"partId": {{partnumber}},
"description":{{descrip}},
"price": {{price}}
}]
},
"customer1":"{{customername}}
} 
 

我的 csv 格式如下:

orderId,nbrboxes,partnumber,descrip,price,customername
AB1,3,PF1234,battery,50,johnDoe
AB1,3,PT2345,battery,40,johnDoe
AB1,3,PT2345,cable,40,johnDoe

有什么想法可以将 1 个 csv 中的多行读取到 1 个帖子请求中吗?如果我只有一排,邮递员中的跑步者工作得很好。问题在于,当它们实际上相同时,它将单独的行读取为不同的迭代/发布请求。 谢谢

【问题讨论】:

    标签: csv postman runner


    【解决方案1】:

    在 Postman 中读取 CSV 文件

    CSV:
    a,b,c
    1,2,3
    1,5,6
    2,4,6
    

    CSV 解析输出:

    方法一:将 CSV 内容存储为环境变量

    只需复制 CSV 文件内容并创建一个环境变量并将内容粘贴到其中

    然后在测试或先决条件步骤中:

    console.log(pm.environment.get("data"))
    const parse = require('csv-parse/lib/sync')
    //Environmental variable where we copy-pasted the csv content
    const input =pm.environment.get("data");
    const records = parse(input, {
     columns: true,
     skip_empty_lines: true
    })
    
    console.log(records)
    

    方法二:通过 Newman 将 CSV 内容传递给环境变量

    (Powershell): 然后在测试或先决条件步骤中使用与上面相同的代码:

    > $a= Get-Content -raw .\1.csv
    > newman run .\test.postman_collection.json -e .\test.postman_environment.json -k -r "cli,htmlextra" --env-var data=$a
    

    Csv 解析输出:

    它将被转换为对象数组,您可以将特定的行和值称为

    records[3]['a'] 
    

    这给出了第 4 行和列 'a'

    gif:

    【讨论】:

    • 谢谢@pdhide,你能解释一下我将如何复制粘贴 csv 值吗?变量会是什么样子?我认为这是我坚持的部分。主要问题是我的 json 模式需要具有固定的结构,但对象和数组的数量可能会有所不同。我的 csv 文件会调整为该结构,但我可以有几行或只有一行。我不知道如何根据我的 csv 中的对象/行数在我的正文请求中创建更多行。我可以有 1 个或 2 个或 3 个零件,零件号甚至可以相同,只是价格或描述不同。
    • @Mariamstack 只需在记事本中打开您的 csv 文件并按原样复制所有内容并将其粘贴到变量中
    • 恐怕它不起作用。我不明白的是环境变量如何连接到我的模式。甚至 csv 是如何连接到环境的。您能否解释一下,以便我可以尝试在某个地方修复/调整?顺便说一句,我正在使用跑步者。
    • 所以我的 json 看起来像这样 {"order": { "id": "AB1", "numberofboxes":"3", "partnbrs [ { "partId": "PF1234", "描述":"电池"、"价格":"50" }]}、"customer1":"johnDoe" }
    • @Mariamstack 添加了 gif 请看视频,您必须提取值并再次将该值设置为变量 pm.environment.set("customername",customername)
    猜你喜欢
    • 1970-01-01
    • 2018-07-07
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2018-09-15
    • 1970-01-01
    • 2018-06-18
    相关资源
    最近更新 更多