使用Axios、Mocha、Chai和JavaScript进行API自动化
我们将使用 Axios 进行 API 自动化测试,结合 Mocha 作为测试框架,Chai 用于断言。由于 JavaScript 的流行性,我们将使用 JavaScript 编写测试代码。通过本教程,您将学会从零开始搭建一个 API 自动化测试框架。请按照以下步骤逐步操作,如果您对某些步骤已经熟悉,可以直接跳到下一步。
先决条件
在开始之前,请确保满足以下条件:
-
安装 Node.js
确保您的系统已安装 Node.js。
-
安装 Visual Studio Code
推荐使用 Visual Studio Code 来编写和格式化代码,但您也可以选择其他文本编辑器。
-
打开 Visual Studio Code
启动 Visual Studio Code 并准备好项目环境。
-
创建项目目录
打开终端并运行以下命令创建项目目录:
mkdir api-testing-axios-mocha-chai-javascript
cd api-testing-axios-mocha-chai-javascript
-
初始化项目
创建一个新的
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"
}
-
安装必要依赖
运行以下命令安装所需的依赖包:
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"
}
}
-
创建
.gitignore文件为了避免将不必要的文件提交到版本控制中,创建一个
.gitignore文件并添加以下内容:
node_modules/
test-results/
logs/
创建 API 测试
接下来,我们将创建一个用于保存 API 测试代码的目录,并编写测试脚本。
-
创建测试目录
在项目根目录下运行以下命令:
mkdir api-tests
-
编写 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
-
编写 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);
});
});
-
编写 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);
});
});
-
编写 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);
});
});
-
编写 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/
最新文章
- 构建更智能的搜索:面向开发者的Anthropic AI API – Just Think AI
- 基于N-API和node-addon-api的Node.js异步C++扩展
- 理解每种API类型的基本指南
- REST API 安全最佳实践
- 银行卡OCR识别API在Java、Python、PHP中的使用教程
- 使用WEB3钱包API实现智能合约交互的完整教程
- 如何获取心知天气 API Key 密钥(分步指南)
- REST APIs与微服务:关键差异
- Sabre API 集成:领先的 GDS 实践经验
- 函数调用与工具使用入门 – Apideck
- 什么是API测试?其优势、类型及最佳实践
- API 安全策略和基础指南