使用Axios、Mocha、Chai和JavaScript进行API自动化

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

我们将使用 Axios 进行 API 自动化测试,结合 Mocha 作为测试框架,Chai 用于断言。由于 JavaScript 的流行性,我们将使用 JavaScript 编写测试代码。通过本教程,您将学会从零开始搭建一个 API 自动化测试框架。请按照以下步骤逐步操作,如果您对某些步骤已经熟悉,可以直接跳到下一步。


先决条件

在开始之前,请确保满足以下条件:

  1. 安装 Node.js
    确保您的系统已安装 Node.js。

  2. 安装 Visual Studio Code
    推荐使用 Visual Studio Code 来编写和格式化代码,但您也可以选择其他文本编辑器。

  3. 打开 Visual Studio Code
    启动 Visual Studio Code 并准备好项目环境。

  4. 创建项目目录
    打开终端并运行以下命令创建项目目录:

    mkdir api-testing-axios-mocha-chai-javascript
    cd api-testing-axios-mocha-chai-javascript
  5. 初始化项目
    创建一个新的 package.json 文件:

    npm init -y

    生成的 package.json 文件内容如下:

    {
     "name": "api-testing-axios-mocha-chai-javascript",
     "version": "1.0.0",
     "description": "",
     "main": "index.js",
     "scripts": {
       "test": "echo "Error: no test specified" && exit 1"
     },
     "keywords": [],
     "author": "",
     "license": "ISC"
    }
  6. 安装必要依赖
    运行以下命令安装所需的依赖包:

    npm install --save axios mocha chai mochawesome rimraf @faker-js/faker properties-reader

    安装完成后,package.json 文件将更新为:

    {
     "dependencies": {
       "axios": "^1.0.0",
       "mocha": "^10.0.0",
       "chai": "^4.3.0",
       "mochawesome": "^7.1.3",
       "rimraf": "^3.0.2",
       "@faker-js/faker": "^7.3.0",
       "properties-reader": "^2.2.0"
     }
    }
  7. 创建 .gitignore 文件
    为了避免将不必要的文件提交到版本控制中,创建一个 .gitignore 文件并添加以下内容:

    node_modules/
    test-results/
    logs/

创建 API 测试

接下来,我们将创建一个用于保存 API 测试代码的目录,并编写测试脚本。

  1. 创建测试目录
    在项目根目录下运行以下命令:

    mkdir api-tests
  2. 编写 GET 请求测试
    创建 api-tests/get_request.js 文件,添加以下代码:

    const axios = require("axios");
    const { expect } = require("chai");
    
    describe("GET API 请求测试", async () => {
     it("应该能够获取用户列表", async () => {
       const res = await axios.get("https://reqres.in/api/users?page=2");
       console.log(res.data);
       expect(res.data.page).to.equal(2);
       expect(res.data.per_page).to.equal(6);
     });
    });

    运行测试:

    npx mocha ./api-tests/get_request.js --timeout=30000
  3. 编写 POST 请求测试
    创建 api-tests/post_request.js 文件,添加以下代码:

    const axios = require("axios");
    const { expect } = require("chai");
    const { faker } = require("@faker-js/faker");
    
    describe("POST API 请求测试", async () => {
     it("应该能够创建用户", async () => {
       const randomName = faker.name.findName();
       const randomJobTitle = faker.name.jobTitle();
       const res = await axios.post("https://reqres.in/api/users", {
         name: randomName,
         job: randomJobTitle,
       });
       console.log(res.data);
       expect(res.data.name).to.equal(randomName);
       expect(res.data.job).to.equal(randomJobTitle);
     });
    });
  4. 编写 PUT 请求测试
    创建 api-tests/put_request.js 文件,添加以下代码:

    const axios = require("axios");
    const { expect } = require("chai");
    const { faker } = require("@faker-js/faker");
    
    describe("PUT API 请求测试", async () => {
     it("应该能够更新用户信息", async () => {
       const randomName = faker.name.findName();
       const randomJobTitle = faker.name.jobTitle();
       const res = await axios.put("https://reqres.in/api/users/2", {
         name: randomName,
         job: randomJobTitle,
       });
       console.log(res.data);
       expect(res.data.name).to.equal(randomName);
       expect(res.data.job).to.equal(randomJobTitle);
     });
    });
  5. 编写 PATCH 请求测试
    创建 api-tests/patch_request.js 文件,添加以下代码:

    const axios = require("axios");
    const { expect } = require("chai");
    const { faker } = require("@faker-js/faker");
    
    describe("PATCH API 请求测试", async () => {
     it("应该能够更新用户名称", async () => {
       const randomName = faker.name.findName();
       const res = await axios.patch("https://reqres.in/api/users/2", {
         name: randomName,
       });
       console.log(res.data);
       expect(res.data.name).to.equal(randomName);
     });
    });
  6. 编写 DELETE 请求测试
    创建 api-tests/delete_request.js 文件,添加以下代码:

    const axios = require("axios");
    const { expect } = require("chai");
    
    describe("DELETE API 请求测试", async () => {
     it("应该能够删除用户", async () => {
       const res = await axios.delete("https://reqres.in/api/users/2");
       console.log(res.status);
       expect(res.status).to.equal(204);
     });
    });

生成测试报告

运行以下命令生成测试报告:

npx mocha ./api-tests --timeout=30000 --reporter mochawesome

生成的报告将包含 JSON 和 HTML 格式的详细测试结果。


总结

通过本教程,您已经学习了如何使用 Axios、Mocha 和 Chai 搭建一个完整的 API 自动化测试框架。您可以根据实际需求扩展测试用例,并生成详细的测试报告以便分析测试结果。希望本教程对您有所帮助!

原文链接: https://www.codewithmmak.com/blog/api-automation-using-axios-mocha-chai-and-javascript/