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

如何在Mocha测试中获取API生成的Location ID并用于删除测试

解决方案

1. 定义共享变量存储动态ID

在describe块内部定义一个变量,让同一块下的所有测试用例都能访问,用来保存创建成功后返回的Location ID:

describe("Create a location with all the crud information ", function () {
  let locationId; // 定义共享变量存储ID
  // 后续测试用例写在这里
});

2. 在创建测试中提取并打印ID

修改原创建测试用例,在断言通过后从响应体里取出ID,赋值给共享变量并打印。另外注意原测试存在断言错误:Postman返回的响应是response.body.location(单数对象),但原代码里写了response.body.locations(复数),需要修正:

it("It should return location crud successfully", async function () {
  const request = getCreateLocationsRequest();
  const response = await PostCreateLocation({
    token: accessToken,
    requestBody: request,
  });
  // 修正断言:将locations改为location
  expect(response).to.not.be.empty;
  expect(response.status).to.eql(200);
  expect(response.body.location).to.not.be.empty;
  expect(response.body).to.have.property("location");
  expect(response.body.location).to.have.property("id");

  // 获取并打印动态ID
  locationId = response.body.location.id;
  console.log("已创建的Location ID:", locationId);
});

3. 编写删除测试用例并传入ID

在同一个describe块下新增删除测试,直接使用之前保存的locationId调用删除接口即可:

it("It should delete the created location successfully", async function () {
  // 先验证ID已被正确赋值
  expect(locationId).to.not.be.undefined;

  const deleteResponse = await DeleteLocation({
    token: accessToken,
    locationId: locationId, // 传入动态获取的ID
  });

  // 根据实际删除接口的响应添加断言
  expect(deleteResponse.status).to.eql(200);
  // 示例:如果删除接口返回成功标识,可添加对应断言
  // expect(deleteResponse.body.success).to.eql(true);
});

补充说明

  • Mocha会按it块的顺序执行测试,因此创建测试会先运行,保证删除测试执行时locationId已有有效值
  • 如果你的删除接口参数格式不同(比如ID需要放在URL路径中),只需对应调整传参方式即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:18:12