在 Postman 中制作动态名称文本字段
Posted
技术标签:
【中文标题】在 Postman 中制作动态名称文本字段【英文标题】:Make dynamic name text field in Postman 【发布时间】:2014-11-16 09:39:33 【问题描述】:我正在使用Postman 对服务器进行 REST API 调用。我想让名称字段动态化,这样我每次都可以使用唯一名称运行请求。
"location":
"name": "Testuser2", // this should be unique, eg. Testuser3, Testuser4, etc
"branding_domain_id": "52f9f8e2-72b7-0029-2dfa-84729e59dfee",
"parent_id": "52f9f8e2-731f-b2e1-2dfa-e901218d03d9"
【问题讨论】:
你的问题是? 你的问题是什么? 我的问题是我想让“name”字段动态化,所以当我运行这个脚本时,它会成功运行而不是错误“name is already taken” 所以你需要一个代码来创建上面动态(随机)生成的名称字段的json数据吗?好的,到目前为止你尝试了什么? @yazan 我不知道如何生成随机数据?我没有什么可以尝试随机数据的。所以请建议我如何解决这个问题? 【参考方案1】:对于任何要对我投反对票的人,这篇文章是在与 OP 的 cmets 讨论之前发布的(见下文)。我将其保留在原位,因此最终描述他需要什么的 OP 的评论不会从问题中删除。
据我了解,您正在寻找的是一个基本解决方案。假设:
您正在开发某种需要测试数据的脚本name
字段在每次运行时都应该是唯一的
如果您的问题更具体,那么我可以给您更具体的答案,但这是我目前所能做的最好的。
var counter = location.hash ? parseInt(location.hash.slice(1)) : 1; // get a unique counter from the URL
var unique_name = 'Testuser' + counter; // create a unique name
location.hash = ++counter; // increase the counter by 1
您可以通过查看地址栏并将URL从以#1
结尾的URL更改为#5
等来强制更改计数器。
然后您可以在构建对象时使用变量name
:
var location =
name: unique_name,
branding_domain_id: 'however-you-currently-get-it',
parent_id: 'however-you-currently-get-it'
;
【讨论】:
嗨,乔,谢谢你的帮助,你是对的,我使用了随机名称字段,但使用的是 json 格式。因为我在 postman 工作,这里我使用的是 json 格式,所以我可以在 postman 中将你的代码与我的脚本一起使用吗? @manoj 我不知道,我以前从未听说过 Postman :-) JSON 是一种数据存储语言,它不能进行任何类型的编程。我假设您使用的是 javascript,因为您在没有任何上下文的情况下提到了 JSON,但显然您不是。您可能无法使用任何答案,但如果您将问题标记为 Postman 或只是提到您正在使用它,那将节省我们俩的时间:-) @manoj 我已经为您更新了您的问题,以便更具体地满足您的需求,并为您正确标记【参考方案2】:你想在 Postman 中使用Dynamic Variables。
您发布的 JSON 如下所示:
"location":
"name": "$guid",
"branding_domain_id": "52f9f8e2-72b7-0029-2dfa-84729e59dfee",
"parent_id": "52f9f8e2-731f-b2e1-2dfa-e901218d03d9"
请注意,这将为您提供一个 GUID(您还可以选择使用整数或时间戳),并且我目前不知道注入字符串的方法(例如,从测试文件或数据生成实用程序)。
【讨论】:
上述“动态变量”链接并不直接指向信息。请改用this link。 Postman 现在有一个 fakerjs 模块的子集,因此您可以在响应正文中使用$randomFullName
。这也是使用learning.postman.com/docs/postman/scripts/…的链接
@Samir:他们一直在更改 URL!这是 Postman Learning 关于“动态变量”的文章的最新链接:learning.postman.com/docs/postman/variables-and-environments/…【参考方案3】:
在 Postman 中,您可以传递 0 到 1000 范围内的随机整数,在您的数据中您可以将其用作
"location":
"name": "Testuser$randomInt",
"branding_domain_id": "52f9f8e2-72b7-0029-2dfa-84729e59dfee",
"parent_id": "52f9f8e2-731f-b2e1-2dfa-e901218d03d9"
【讨论】:
【参考方案4】:这件事只需要我的 5 美分。使用 randomInt 时,数字最终可能会出现在数据库中,这可能会导致问题。 解决方案(至少对我而言)是改用 $timestamp。
示例:
"username": "test$timestamp",
"password": "test"
【讨论】:
【参考方案5】:在前置请求中添加以下文本:
var myUUID = require('uuid').v4(); pm.environment.set('myUUID', myUUID);
并在任何你想要的地方使用 myUUID 喜欢
名称:“myUUID”
它将为每个请求生成一个随机的唯一 GUID
【讨论】:
【参考方案6】:var uuid = require('uuid');
pm.globals.set('unique_name', 'testuser' + uuid.v4());
将上述代码添加到预请求选项卡。 这是您可以为后续的 api 调用重用唯一名称。
Dynamic variable 像 randomInt,或者 guid 是动态的,即:你不知道请求中发送了什么。没有办法再次引用它,除非它被发回作为回应。即使你将它存储在一个变量中,它仍然是动态的
另一种方法是:
var allowed = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
var shuffled_unique_str = allowed.split('').sort(function()return 0.5-Math.random()).join('');
请参阅link 了解更多选项
【讨论】:
以上是关于在 Postman 中制作动态名称文本字段的主要内容,如果未能解决你的问题,请参考以下文章