postamn 提供可在请求中使用的动态变量:
{{$guid}} :v4样式的guid
{{$timestamp}}:当前时间戳(Unix时间戳,以秒为单位)
{{$randomInt}}:0到1000之间的随机整数
当输入{ 的时候,会自动显示上面三种随机变量可以使用
更多随机变量可以参考官方文档:
https://learning.postman.com/docs/writing-scripts/script-references/variables-list/
比如用户名使用时间戳,那每次注册都不一样,都可以注册成功了,引用时间戳变量:{{$timestamp}}
通常这种情况,我们还可以用pre-request功能对请求前参数预处理来实现
注册账号用"test"名称会发现已经被注册了, username 引用环境变量中的 username 变量。
于是在Pre-request Script 对请求参数预处理, 先把username变量不要写死,引用另外一个变量{{env_username}}
而env_username 变量在 Pre-request Script 脚本里面定义
定义env_username ,并且获取值存放道环境变量中
console.log() 可以在在console控制台查看日志
点 code 按钮可以快速查看http代码,看请求参数是否正确
所有的请求 及 结果均可以查看到
常用的Pre-request Script 中常用代码
pm.globals.unset("variable_key"); 清除全局变量
pm.environment.unset("variable_key"); 清除环境变量
pm.globals.get("variable_key"); 获取全局变量
pm.variables.get("variable_key"); 获取一个变量
pm.environment.get("variable_key"); 获取环境变量
pm.sendRequest("https://postman-echo.com/get", function (err, response) {
console.log(response.json());
}); 发送一个请求
pm.globals.set("variable_key", "variable_value"); 设置环境变量
可以使用 pm.sendRequest 方法从“pre-request”或“Tests”脚本异步发送请求。
如果您要执行计算或同时发送多个请求,而不必等待每个请求完成,则可以在后台执行逻辑
pre-request 发送请求
点 Send a request 快速生成一个请求示例
- pm.sendRequest 是发送一个请求
- function中的err表示请求返回的错误信息,
- response表示响应内容
- console.log()是控制台输出日志
以下是官方文档:
// Example with a plain string URL
pm.sendRequest('https://postman-echo.com/get', (error, response) => {
if (error) {
console.log(error);
} else {
console.log(response);
}
});
// Example with a full-fledged request
const postRequest = {
url: 'https://postman-echo.com/post',
method: 'POST',
header: {
'Content-Type': 'application/json',
'X-Foo': 'bar'
},
body: {
mode: 'raw',
raw: JSON.stringify({ key: 'this is json' })
}
};
pm.sendRequest(postRequest, (error, response) => {
console.log(error ? error : response.json());
});
// Example containing a test
pm.sendRequest('https://postman-echo.com/get', (error, response) => {
if (error) {
console.log(error);
}
pm.test('response should be okay to process', () => {
pm.expect(error).to.equal(null);
pm.expect(response).to.have.property('code', 200);
pm.expect(response).to.have.property('status', 'OK');
});
});