如何在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
相关产品推荐
相关产品推荐

