在Postman中创建独特的HTTP请求体用于API测试。

3

我想在 Postman 上创建一个带有唯一电子邮件属性的测试请求,并将其添加到请求主体中。

{
    ...
    "email": "{{email_string}}.com",
    ...
}

我已经在环境中设置了email_string的静态字符串,但是在请求发生之前有没有办法动态地设置email_string

3个回答

8
您可以在请求正文中直接使用Postman对Faker库的内置支持:
{
    ...
    "email": "{{$randomEmail}}",
    ...
}

在预请求脚本中,您可以这样写:
pm.environment.set('user-email', pm.variables.replaceIn('{{$randomEmail}}'));

1
这应该是被接受的答案 - 动态变量是在我的回答之后引入的。您也可以只使用 pm.environment.set('user-email', pm.variables.replaceIn('{{$randomEmail}}')) 在预请求脚本中替换字符串。 - Danny Dainton

6
作为另一种选择,您可以使用sendRequest函数从设计返回随机数据的第三方API获取值,而不是使用之前提到的答案。
这可以添加到Pre-Request Script选项卡中:
pm.sendRequest("https://randomuser.me/api/", (err, res) => {
    // Get the random value from the response and store it as a variable
    var email = res.json().results[0].email
    // Save the value as an environment variable to use in the body of the request
    pm.environment.set("email_address", JSON.stringify(email))
})

你可以使用这个API创建大量的随机数据,但它是第三方API,所以你无法控制它是否会发生改变。如果你只需要短期使用,那么应该没问题。
还值得记住的是,Postman自带了Lodash,这样就可以使用该模块的任何函数来减少一些原生JS代码。

1
虽然这仍然是可行且有效的方法,但更清晰和更新的选项是Tom Redfern提供的答案。 - Danny Dainton

1
在Postman应用程序中有一个名为“预请求脚本”的选项卡,靠近“测试”选项卡。您可以使用此选项卡设置环境变量。
以下是诀窍:
var text = "";
var possible = "abcdefghijklmnopqrstuvwxyz";
for (var i = 0; i < 5; i++) {
    text += possible.charAt(Math.floor(Math.random() * possible.length));
}
postman.setEnvironmentVariable('email_string', text + '@' + text);

我认为这个脚本可以帮助您在环境中设置随机值。

我认为,在“在JavaScript中生成随机字符串/字符”的问题讨论中,有人提到Math.random并不是很适合这个问题。https://dev59.com/dnM_5IYBdhLWcg3wgja2#27747377 - n-verbitsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接