Chai 和 Mocha 为API编写测试

简介: 昨天在文章《JavaScript单元测试的“抹茶”组合:Mocha和Chai》介绍了JavaScript单元测试常用组合,本文展示使用 Chai 和 Mocha 为API编写简单的测试用例。

昨天在文章《JavaScript单元测试的“抹茶”组合:Mocha和Chai》介绍了JavaScript单元测试常用组合,本文展示使用  ChaiMocha 为API编写简单的测试用例。

本文将除用到主要框架 ChaiMocha 外,还需要用到 Chai HTTP

Chai HTTP 是一个使用 Chai 断言进行 HTTP 集成测试的框架,详细文档参阅官方文档

首先,通过运行以下命令来安装相关的依赖项:

npm install mocha --save-dev
npm install chai --save-dev
npm install chai-http --save-dev

修改项目文件 package.json  ,修改 scripts 项,增加 test 命令:

"scripts": {
    "start": "node ./app.js",
    "dev": "nodemon ./app.js",
    "test": "mocha"
}

接下来开始编写测试用例,本文以用户登录接口为例,三个测试条件:

  1. 登录成功
  2. 用户名不存在
  3. 密码错误

测试用例

第 1 步

在项目目录中创建一个名为 test 的文件夹,然后在其中创建一个文件 administrators.js

第 2 步

接下来编写单元测试用例,编辑文件administrators.js ,代码如下:

const chai = require("chai");
const chaiHttp = require("chai-http");
const apiUrl = "http://127.0.0.1:4088";
chai.should();
chai.use(chaiHttp);
describe("测试用户登录模块", () => {
    describe("POST /api/v1/auth/login", () => {
        it("用户名不存在", (done) => {
            chai.request(apiUrl)
                .post("/api/v1/auth/login")
                .send({
                    username: "devpoint",
                    password: "dev126",
                })
                .end((error, response) => {
                    response.should.have.status(200);
                    response.body.should.be.a("object");
                    response.body.should.have.property("code").eq(30004);
                    done();
                });
        });
        it("登录密码错误", (done) => {
            chai.request(apiUrl)
                .post("/api/v1/auth/login")
                .send({
                    username: "administrator",
                    password: "dev126",
                })
                .end((error, response) => {
                    response.should.have.status(200);
                    response.body.should.be.a("object");
                    response.body.should.have.property("code").eq(30001);
                    done();
                });
        });
        it("登录成功", (done) => {
            chai.request(apiUrl)
                .post("/api/v1/auth/login")
                .send({
                    username: "administrator",
                    password: "devpoint",
                })
                .end((error, response) => {
                    response.should.have.status(200);
                    response.body.should.be.a("object");
                    response.body.should.have.property("code").eq(0);
                    response.body.should.have.property("data").a("object");
                    response.body.data.should.have
                        .property("username")
                        .eq("administrator");
                    done();
                });
        });
    });
});

在上面的代码片段中:

  • describe 是一个保存测试集合的函数,需要两个参数,第一个是被测功能的名称或者描述,第二个是包含一个或多个测试逻辑的函数,也可以嵌套描述。
  • it 也是一个函数,它实际上是一个测试主题,接受两个参数,第一个参数是测试的名称,第二个参数是函数,实现主要的测试逻辑。

第 3 步

现在运行以下命令以查看测试结果:

npm run test

运行后,将能看到上面编写的3个单元测试用例结果,如图:

image.png

总结

单元测试为应用程序的最小部分,在开发API接口的时候可以为预期的结果编写相应的测试用例。在项目开发中,普遍是使用前后端分离的模式,可以使用 Chai 和 Mocha 为后台接口编写测试用例,以最大程度的覆盖接口的逻辑,可以降低前后端联调出现异常的概率,进而提高项目开发效率。


相关文章
|
2天前
|
API 开发者
免费邮箱API发送邮件测试调试的方法和步骤
本文介绍了使用免费邮箱API如aoksend、Mailgun、SMTP2GO发送邮件的测试调试步骤:选择合适的API,获取访问密钥,配置邮件参数,编写测试代码,调试和测试,查看发送日志,以及优化改进邮件发送功能,确保其稳定运行。
|
2天前
|
测试技术 API 网络架构
Python的api自动化测试 编写测试用例
【4月更文挑战第18天】使用Python进行API自动化测试,可以结合`requests`库发送HTTP请求和`unittest`(或`pytest`)编写测试用例。以下示例: 1. 安装必要库:`pip install requests unittest` 2. 创建`test_api.py`,导入库,定义基础URL。 3. 创建继承自`unittest.TestCase`的测试类,包含`setUp`和`tearDown`方法。 4. 编写测试用例,如`test_get_users`,检查响应状态码和内容。 5. 运行测试:`python -m unittest test_api.py`
11 2
|
2天前
|
JSON 测试技术 API
Python的Api自动化测试使用HTTP客户端库发送请求
【4月更文挑战第18天】在Python中进行HTTP请求和API自动化测试有多个库可选:1) `requests`是最流行的选择,支持多种请求方法和内置JSON解析;2) `http.client`是标准库的一部分,适合需要低级别控制的用户;3) `urllib`提供URL操作,适用于复杂请求;4) `httpx`拥有类似`requests`的API,提供现代特性和异步支持。根据具体需求选择,如多数情况`requests`已足够。
8 3
|
1月前
|
安全 测试技术 API
|
1月前
|
JSON 测试技术 API
Postman Newman 实现 API 自动化测试的快速指南
Newman 是一款专为 Postman 打造的命令行工具,旨在通过自动运行 Postman 集合和环境,实现 API 测试的自动化。它使得开发者无需打开 Postman 图形界面,即可直接在命令行中执行测试用例。
|
1月前
|
缓存 负载均衡 Java
Python实现API接口并发测试
Python实现API接口并发测试
57 0
|
1月前
|
架构师 前端开发 测试技术
|
2月前
|
JSON JavaScript 前端开发
提升 API 测试效率:Postman Tests 详解
Postman 不仅是一个强大的 API 开发工具,它还提供了创建自动化测试脚本的能力,这些脚本可以用于检验API请求得到的响应是否符合预期。这些测试脚本被称为 “Tests”,支持使用 JavaScript 编程语言进行编写,并且 Postman 提供了一系列的断言库来帮助你检查包括但不限于状态码、响应内容以及响应时间在内的响应数据。
|
2月前
|
开发框架 JSON .NET
初学者不会写接口怎么办?微软Visual Studio 2022无脑式API接口创建——Swagger一键导入APIKit快速测试
初学者不会写接口怎么办?微软Visual Studio 2022无脑式API接口创建——Swagger一键导入APIKit快速测试
77 0
|
2月前
|
JSON 测试技术 API
一个数据驱动的API测试框架
一个数据驱动的API测试框架

热门文章

最新文章