You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postman:基于CSV数据动态生成请求体多轮运行登录API并定制断言

实现步骤

一、准备CSV测试数据

按需求设计CSV列,包含userName、password、remember、expectedCode(断言用的预期响应码)、expectedMsg(预期响应信息)等字段。其中remember列留空时,对应仅传必填参数的场景。示例CSV内容:

userName,password,remember,expectedCode,expectedMsg
testUser1,123456,,200,登录成功
testUser2,abc789,true,200,登录成功(记住密码)
testUser3,xyz123,false,200,登录成功(不记住密码)

二、动态生成请求体

以下是主流API测试工具的实现方式:

1. JMeter实现

  • 添加CSV Data Set Config,配置文件路径、编码,变量名设为userName,password,remember,按需勾选Recycle on EOF。
  • 在登录请求的Body Data中用Groovy脚本构造JSON:
def requestBody = [:]
requestBody.put("userName", vars.get("userName"))
requestBody.put("password", vars.get("password"))
def rememberVal = vars.get("remember")
if (rememberVal != null && rememberVal != "") {
    requestBody.put("remember", Boolean.parseBoolean(rememberVal))
}
new groovy.json.JsonBuilder(requestBody).toPrettyString()
  • 将请求内容类型设为application/json,选择Body Data并插入上述脚本。

2. Postman实现

  • 添加CSV数据源,在Run Collection时选择该文件,确保变量名与CSV列名匹配。
  • 在登录请求的Pre-request Script中构造请求体:
let requestBody = {
    userName: pm.variables.get("userName"),
    password: pm.variables.get("password")
};
const remember = pm.variables.get("remember");
if (remember && remember !== "") {
    requestBody.remember = remember === "true";
}
pm.request.body.raw = JSON.stringify(requestBody, null, 2);

三、设置专属断言

每轮迭代根据CSV中的预期值执行断言:

1. JMeter实现

  • 用JSR223 Assertion做灵活断言:
def response = new groovy.json.JsonSlurper().parseText(prev.getResponseDataAsString())
def expectedCode = vars.get("expectedCode") as Integer
def expectedMsg = vars.get("expectedMsg")

if (response.code != expectedCode) {
    AssertionResult.setFailure(true)
    AssertionResult.setFailureMessage("响应码不匹配,预期:${expectedCode},实际:${response.code}")
}
if (!response.msg.contains(expectedMsg)) {
    AssertionResult.setFailure(true)
    AssertionResult.setFailureMessage("响应信息不匹配,预期包含:${expectedMsg},实际:${response.msg}")
}
  • 也可直接用Response Assertion,勾选Response Code和Text Response,分别填入${expectedCode}和${expectedMsg}。

2. Postman实现

在Tests标签中编写断言脚本:

const expectedCode = pm.variables.get("expectedCode");
const expectedMsg = pm.variables.get("expectedMsg");
const response = pm.response.json();

pm.test(`响应码匹配预期:${expectedCode}`, function () {
    pm.response.to.have.status(expectedCode);
});

pm.test(`响应信息包含预期内容:${expectedMsg}`, function () {
    pm.expect(response.msg).to.include(expectedMsg);
});

四、执行与验证

运行测试集合/线程组,工具会自动遍历CSV每行数据,动态生成对应请求体并执行专属断言,最后通过测试报告确认每轮迭代的结果是否符合预期。

内容的提问来源于stack exchange,提问作者Koushic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 22:32:40