Pre-request Script(预请求脚本)
Pre-request Script 用于在请求发送前执行,常见用途包括生成认证令牌、设置动态请求头、初始化环境变量等。例如,生成JWT令牌并添加到请求头的脚本:
// 引入jsonwebtoken模块(需提前安装)
const jwt = require('jsonwebtoken');
const payload = {"userId": "user123"};
const secret = "secretkey_example";
const token = jwt.sign(payload, secret);
// 添加Authorization头
pm.request.headers.add({key: "Authorization", value: "Bearer " + token});
或设置环境变量的脚本:
// 设置时间戳环境变量
pm.environment.set("timestampHeader", new Date().toISOString());
这些脚本会在请求发送前运行,确保请求携带必要的动态数据。
Tests Script(测试脚本)
Tests Script 用于在请求响应后执行,主要功能是验证响应状态码、响应体内容、响应时间等。例如,检查状态码是否为200并验证响应体中的用户名:
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
pm.test("Username is correct", function () {
const jsonData = pm.response.json();
pm.expect(jsonData.user).to.eql("JohnDoe");
});
或验证响应时间的脚本:
pm.test("Response time is less than 200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
这些脚本会自动运行,并在“Tests”选项卡中显示通过/失败的测试结果。
环境变量与全局变量
Postman脚本可通过pm.environment和pm.globals对象操作环境变量和全局变量,实现数据动态传递。例如:
pm.environment.set("authToken", "abc123xyz");
const token = pm.environment.get("authToken");
pm.request.headers.add({key: "Authorization", value: "Bearer " + token});
pm.globals.set("baseUrl", "https://api.example.com");
const baseUrl = pm.globals.get("baseUrl");
环境变量需在“Environments”中创建并激活,全局变量则在“Globals”中管理。
数据驱动测试
通过外部数据文件(CSV/JSON)实现数据驱动测试,让同一请求使用多组数据进行验证。例如,使用CSV文件中的userData字段发送请求:
const userData = pm.iterationData.get("userData"); // 从CSV中读取数据
pm.sendRequest({
url: 'https://api.example.com/user/' + userData.id,
method: 'GET',
headers: {
'Authorization': 'Bearer ' + pm.environment.get("authToken")
}
}, (error, response) => {
pm.test("User data matches", function () {
pm.expect(response.json().name).to.eql(userData.name);
});
});
需将CSV文件导入Postman集合的“Data” tab中,脚本通过pm.iterationData.get()获取每行数据。
使用Newman运行脚本
Newman是Postman的命令行工具,可将Postman集合和脚本自动化运行。安装与运行步骤:
sudo yum install -y nodejs npm
sudo npm install -g newman
collection.json;选择“Environment”→“Export”,保存为environment.json。newman run collection.json -e environment.json
运行后会输出测试结果,包括通过的测试数、失败的测试详情。自动化集成(CI/CD)
将Newman集成到CI/CD流程(如Jenkins),实现代码提交后自动运行API测试。例如,Jenkinsfile配置:
pipeline {
agent any
stages {
stage('Run Postman Tests') {
steps {
sh './run_postman.sh' // 调用前面创建的Shell脚本
}
}
}
}
Shell脚本run_postman.sh内容:
#!/bin/bash
COLLECTION_FILE="/path/to/collection.json"
ENVIRONMENT_FILE="/path/to/environment.json"
newman run $COLLECTION_FILE -e $ENVIRONMENT_FILE
赋予执行权限后,每次代码提交都会自动触发Postman测试。