前端接口测试

article/2025/10/9 4:15:51

背景

由于需求不断更改,项目前后端分离后,后端开发人员经常需要改字段加字段,也有可能删掉接口,这时候前端如果没有相对应的调整,就容易造成bug。为了解决这个问题,我们需要对接口进行测试。

测试被调用接口

  1. 返回的数据类型判断
  2. 接口返回的数据结构变化(添字段或者删字段)
  3. 接口路径变化(导致接口请求失败)
  4. 接口是否异常

单元测试jest

单元测试选择jest,在jest没有找到我要的断言方法,所有需要自己通过expect.extend扩展。

使用方式,例如response data
received

{"code":"0","msg":"","version":3.14,"data":[{"name":"平台同步","id":0},{"name":"商城同步","id":1},{"name":"人工录入","id":2},{"name":"开放平台","id":3}]
}

模板(expected)

{"code":"@String","msg":"@String","version":"@Number && @this < 4 ","data":[{"name":"@String","id":"@Number"},]
}

模板的属性值介绍

@String其实是个表达式, 自定义插件内部会将@String转化为:

Object.prototype.toString.call(val) === [object  String']

其实你还可以这么写@String || @Number转化后:

Object.prototype.toString.call(val) === '[object  String]' || Object.prototype.toString.call(val) === '[object  Number]'

@this等于当前属性值, 例如: @this < 4会转换为3.14 < 4表达式

只要条件表达式为false, 那说明这个字段异常,那么断言就失败。

返回的数据类型判断

received

{"code":"0","msg":"","version":"3.13","data":[{"name":true,"id":0},{"name":"商城同步","id":1},{"name":"人工录入","id":2},{"name":"开放平台","id":3}]
}

模板(expected)

{"code":"@String","msg":"@String","version":"@Number","data":[{"name":"@String","id":"@Number"},]
}

运行结果

假设后台将字段version类型改为String, data[0].name类型改为Number

接口返回的数据结构变化(添字段或者删字段)

received

{"code":"0","msg":"","data":[{"name":"平台同步","id":0, "orderId": 2},{"name":"商城同步","id":1},{"name":"人工录入","id":2},{"name":"开放平台","id":3}]
}

模板(expected)

{"code":"@String","msg":"@String","version":"@Number","data":[{"name":"@String","id":"@Number"},]
}

运行结果

假设后台删除了version字段, 在data数组第一个元素加入orderId字段

快速生成模板工具

如果一个接口有几十上百个字段,每个字段都手动定义类型,这个工作量就太大了。如果我们将后台response 的json数据复制过来转换成对比模板 , 这样效率就大大提升,不需要为每个字段去定义类型。
为了快速生成对比模板,我们应该写个工具,比如:
在这里插入图片描述

执行脚本配置

package.json

	"scripts": {"build:prod": "npm run test:prod && webpack --config build/webpack.prod.conf.js","build:dev": "npm run test && node build/webpack.dev.conf.js","test": "cross-env NODE_ENV=development jest --config test/unit/jest.conf.js","test:prod": "cross-env NODE_ENV=production jest --config test/unit/jest.conf.js","test:ui": "anywhere -d test/unit/extends/eqTemplate/ui -p 20010"},

build:dev跑完接口测试再build吧。

在这里插入图片描述


http://chatgpt.dhexx.cn/article/JKeeQD3j.shtml

相关文章

前端测试方法

最近在学校的《系统分析与设计》一课的大作业上&#xff0c;由于我担任的是测试工程师的角色&#xff0c;因此小小的研究了一些前端和后端的测试到底要怎么做。本文着重于前端测试方法。 1. 什么是测试&#xff1f; 我把测试定义成&#xff1a;是一段检测你的应用代码&#xf…

前端测试都要测什么

单元测试&#xff0c;Unit Testing&#xff0c;简称 UT&#xff0c;是指对软件中的最小可测试单元进行检查和验证&#xff0c;这是最低级别的测试活动&#xff0c;前端开发中单元可以是一个 function 也可以是一个 class&#xff0c;也可以是一个组件。对他们的输出做断言检查&…

前端测试开发工具--mock 的使用

目录 1. 背景 2. Mock是什么 3. Mock能做什么 4. Mock实现方式 5. Mock市面上常见的解决方案 6. Python下unittest.mock使用 1. 背景 在实际产品开发过程中&#xff0c;某个服务或前端依赖一个服务接口&#xff0c;该接口可能依赖多个底层服务或模块&#xff0c;或第三方…

浅谈前端测试

浅谈前端测试 浅谈 TDD 和 BDD TDD Test Driven Development (测试驱动开发) 一种使用自动化单元测试来推动软件设计并强制依赖关系解耦的技术。使用这种做法的结果是一套全面的单元测试&#xff0c;可随时运行&#xff0c;以提供软件可以正常工作的反馈。大概的流程是先针对…

前端测试介绍

测试,作为软件工程的一项重要环节,用来保证项目的正确性,完整性,安全性和可靠性。 前端测试是前端工程化的重要环节,根据测试的粒度可以分为单元测试,功能测试(E2E测试),集成测试。 前端测试框架 单元测试 - Mocha - Jasmine - Jest 断言库 - chai - Jest - …

前端测试接口,POSTMAN一键调试

前端测试接口&#xff0c;POSTMAN一键调试 当我们在开发中&#xff0c;遇到接口有问题时&#xff0c;一般都会找后端battle一下&#xff0c;在这之前我们需要先确认问题&#xff0c;当我们浏览器不方便调试时&#xff0c;我们一般会借助postman&#xff0c;因为比较方便也比较…

【测试数据准备-绕过后端,前端测试】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、 Charles 简单介绍二、本文使用场景三、Charles 通过修改后端返回值&#xff0c;在前端展示。1.工具安装和注册2.使用端点功能修改接口返参数 总结 前言 测…

前端测试一共有哪几种?

前言 哈喽&#xff0c;大家好&#xff0c;我是海怪。 最近有不少朋友找到我聊了聊测试相关的内容&#xff0c;发现他们对测试的分类有些迷茫。实际上测试一共就 3 种&#xff1a;E2E&#xff0c;集成&#xff0c;单测&#xff0c;其它的功能测试、UI 测试、界面测试只是它们中…

聊聊前端测试那点事儿

虽然如今前端测试这个事已经被大家所认可了&#xff0c;但我见过做前端测试的团队并不多&#xff0c;能把前端测试做好的团队&#xff0c;就更加凤毛麟角了。 这个现象背后的逻辑是&#xff1a;编写前端测试其实非常困难。 在编写测试代码时&#xff0c;我们有很多事情要考虑…

前端测试如何做?

前端测试大家天天做。但是你知道前端测试是怎么做的吗&#xff1f; 什么是前端测试? 前端测试是测试图形用户界面(GUI)、web应用程序或软件的功能和可用性的一种测试技术。前端测试的目标是测试整体功能&#xff0c;以确保web应用程序或软件的表示层在连续更新中没有缺陷。 …

前端测试

1.什么是测试 测试是一种验证我们的代码是否可以按预期工作的方法。 换句话说就是写一些代码来验证一段代码是否能得到预期设计代码时所期望的结果。 被测试对象可以是样式&#xff0c;功能&#xff0c;流程&#xff0c;组件等。 2.前端测试的意义&#xff08;这里主要指单元…

Oracle一次插入多条数据(批量插入)

语法&#xff1a; INSERT ALLINTO tableName (column1, column2, column_n) VALUES (expr1, expr2, expr_n)INTO tableName (column1, column2, column_n) VALUES (expr1, expr2, expr_n)INTO tableName (column1, column2, column_n) VALUES (expr1, expr2, expr_n) SELECT c…

oracle建表和插入数据

1.建表 File-->New-->Table 2.建表字段&#xff0c;如果写int的话&#xff0c;会报错 3.建立主键 4.点击应用 5.查看自己建好的表格 6.插入数据(日期这样子) INSERT INTO T_USER(USER_ID,USER_ACCOUNT,REAL_NAME,SEX,BIRTHDAY) VALUES(2,LiSi,李四,1,to_date(2020-2-2,…

Oracle数据库建表与插入数据

Oracle数据库建表和数据插入 本机环境表的建立插入数据 本机环境 windows10-64位 oracle12c 时间&#xff1a;2020-05-26 使用SQL Developer 表的建立 create table tableName ( 属性名 类型 约束&#xff0c; 属性名 类型 约束&#xff0c; . . . 属性名 类型 约束);如&…

oracle一次插入多条数据(insert all)

分享一个零基础&#xff0c;通俗易懂&#xff0c;而且非常风趣幽默的人工智能教程(如不能直接点击访问&#xff0c;请以“右键”->“在新标签页中打开链接”方式打开)网站&#xff0c;网址&#xff1a;https://www.cbedai.net/gnailoug/ 问题 公司的项目&#xff0c;有个功…

oracle数据库创建表并插入数据

这里以创建一个学生表student为例子&#xff0c;表里面字段有id&#xff0c;name&#xff0c;sex&#xff0c;age&#xff0c;math&#xff0c;english&#xff0c;其中id是主键&#xff0c;其他的不为空&#xff0c;语法如下所示&#xff1a; create table student(id number…

Oracle数据库----表中数据的操作(插入、更新、删除数据)

文章目录 一、插入数据插入多行数据的简单方法&#xff1a;1、将表一的全部数据添加到表二中创建副本Courses1&#xff0c;只复制Courses的结构将Courses表中的数据拷贝到Courses1中创建副本的同时复制结构和数据 2、一次性向单个或多个表中插入不同的数据 二、更新数据使用UPD…

Vue 视频教程分享

轻量级MVVM框架Vue.js快速上手&#xff08;MVVM、SEO单页面应用、SSR服务器端渲染、Nuxt.js&#xff09; 大小&#xff1a;6.62G 解压密码&#xff1a;无 链接&#xff1a;https://pan.baidu.com/s/1uBAxS0RvyXCD8uoFU7NXQA 提取码&#xff1a;h4fd

Vue零基础实战教程

Vue零基础实战教程 带有基本 Vue js 应用程序的 Vue。Vue.js 是一个流行的前端 JavaScript 框架。学习vuejs&#xff0c;成为vue开发者 课程英文名&#xff1a;Vue from Scratch with Real Life Vue JS Web Application 此视频教程共8.0小时&#xff0c;中英双语字幕&#x…