使用Mocha、Chai等工具在Javascript中实现自动化API测试

作者:API传播员 · 2025-11-01 · 阅读时间:4分钟

在本教程中,我们将学习如何使用 Mocha 和 Chai 等工具,在 JavaScript 中实现自动化 API 测试。我们将以 https://reqres.in/ 提供的 API 为例,模拟登录功能的测试场景,并验证成功和失败两种情况的响应结果。


1. 安装必要的软件包

首先,您需要安装以下库来支持我们的测试工作。运行以下命令以安装所需的依赖项:

npm install mocha chai supertest --save-dev

安装完成后,您可以在 package.json 文件中检查这些依赖项是否已正确添加。


2. 创建一个名为 login.js 的新文件

在项目中创建一个名为 login.js 的文件,并在文件中导入必要的库 SupertestChai。以下是导入代码的示例:

const request = require("supertest");
const { expect } = require("chai");

3. 创建一个函数来存储端点和有效负载

接下来,我们需要创建一个函数,用于发送 API 请求。以下是一个示例函数,它接受有效负载并发送 POST 请求到指定的端点:

async function login(payload) {
  const response = await request("https://reqres.in")
    .post("/api/login")
    .send(payload);
  return response;
}

此函数将返回 API 的响应结果,供后续测试用例使用。


4. 创建测试场景和测试用例

在这一部分,我们将定义测试场景和测试用例。使用 describe 函数为测试场景命名,使用 it 函数为具体的测试用例命名。以下是一个示例代码:

describe("Login Feature", () => {
  it("Success Login", async () => {
    const payload = {
      "email": "eve.holt@reqres.in",
      "password": "cityslicka"
    };
    const response = await login(payload);

    // 断言:验证响应状态码是否为 200
    expect(response.status).to.equal(200);
  });

  it("Failed Login", async () => {
    const payload = {
      "email": "peter@klaven"
    };
    const response = await login(payload);

    // 断言:验证响应状态码是否为 400
    expect(response.status).to.equal(400);
  });
});

在上述代码中,我们分别测试了成功登录和失败登录两种情况,并通过断言验证了 API 的响应状态码。


5. 运行测试程序

完成代码编写后,您可以通过以下命令运行测试程序:

npx mocha login.js

如果测试通过,您将在终端中看到测试结果的输出。

此外,您还可以将运行命令添加到 package.json 文件的 scripts 部分中,例如:

"scripts": {
  "test": "mocha login.js"
}

然后,您可以直接运行以下命令来执行测试:

npm test

完整代码示例

以下是完整的 API 测试代码,供您参考:

const request = require("supertest");
const { expect } = require("chai");

async function login(payload) {
  const response = await request("https://reqres.in")
    .post("/api/login")
    .send(payload);
  return response;
}

describe("Login Feature", () => {
  it("Success Login", async () => {
    const payload = {
      "email": "eve.holt@reqres.in",
      "password": "cityslicka"
    };
    const response = await login(payload);

    // 断言:验证响应状态码是否为 200
    expect(response.status).to.equal(200);
  });

  it("Failed Login", async () => {
    const payload = {
      "email": "peter@klaven"
    };
    const response = await login(payload);

    // 断言:验证响应状态码是否为 400
    expect(response.status).to.equal(400);
  });
});

扩展阅读

在实际项目中,您可以根据需要添加更多的断言来验证 API 的响应内容,例如响应体中的字段值、错误信息等。有关更多断言的使用方法,请参考 Chai 官方文档

通过本教程,您已经掌握了如何使用 Mocha 和 Chai 在 JavaScript 中实现自动化 API 测试。希望这些内容对您的开发工作有所帮助!

原文链接: https://medium.com/@cofiali53/automation-api-testing-in-javascript-using-mocha-chai-and-supertest-a-beginners-guide-47e317e04501