接口自动化测试之——typescript+axios(一、基础框架搭建及断言)

必要的环境

  1. nodejs
  2. typescript
"本机node版本"
v16.15.0

第一步 项目创建及配置文件

  • 创建一个文件夹 暂且取名demo_ts
  • 在目录内创建包管理 package.json 内容如下
{
 "scripts": {
   "build": "tsc",
   "run": "npm run test",
   "test": "jest",
   "test-c": "jest --coverage"
 },
 "jest": {
   "testEnvironment": "node"
 },
 "dependencies": {
   "axios": "^0.25.0",
   "ts-node": "^10.4.0",
   "typescript": "^4.5.4"
 },
 "devDependencies": {
   "@types/jest": "^27.0.3",
   "jest": "^27.4.5",
   "ts-jest": "^27.1.2"
 }
}
  • 创建 tsconfig.json 配置如下
{
  "compilerOptions": {
    "module": "commonjs",
    "target": "ES2020",
    "rootDir": "./src",
    "outDir": "./out",
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    "strict": true,
    "skipLibCheck": true,
    "sourceMap": true,

  }
}
  • 创建 jest.config.ts 代码如下
module.exports = {
  roots: [
    "<rootDir>"
  ],
  testRegex: 'testcases/(.+)\\.test\\.(jsx?|tsx?)$',
  transform: {
    "^.+\\.tsx?$": "ts-jest"
  },
  moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
};

-至此 目录结构如下
在这里插入图片描述

代码部分

  • 首先创建一个文件夹src src里面分别创建文件夹 apis、 testcases、utils
  • 在utils文件夹创建一个request.ts文件 对axios进行简单的封装 代码如下 (封装可参考axios官方文档)
import axios from "axios";

const service = axios.create({
   timeout: 5000
})
service.interceptors.request.use(
   function (config){
       if (config.headers.token) {
           config.headers.authorization = config.headers.token
       }
       if (config.method === 'post' || config.method === 'put') {
           config.headers.contentType = 'application/json'
       }
       return config
   },
   error => {
       return Promise.reject(error)
   }
)
service.interceptors.response.use(function (response: any) {
       if (response.data.success === true) {
           return response
       }
   },
   error => {
       return Promise.reject(error)
   }
)
export const Method:any = {
   GET: 'get',
   POST: "post",
   PUT: 'put',
   DELETE: 'delete'
}
export default service


   
  • 在apis创建接口文件 user.ts 代码如下 IP及api请自行修改 此处只是举例 无法使用
   import request, {Method} from "../utils/request";

const default_ip = 'http://www.baidu.com'

export const login = ( data = {}, headers = {}) => {
   return request({
       url:  default_ip + '/api/user/login',
       method: Method.POST,
       data,
       headers
   })
}

创建用例

  • 在tastcases文件夹创建文件 命名规则 xxx.test.ts 此处文件名为 user.test.ts 代码如下
import {login} from "../apis/user";

test('api_test', () => {
   return login({
       'password': "2d3383fa392936ad72d3383fa392936a",
       'phone': "13456789123"
   }).then( res => {
       expect(res.data.code).toBe(200)
   })
})

运行用例 打开 package.json 选择运行test-c

运行后会执行用例并生成测试报告
如图 coverage/lcov-report/index.html是测试web版 测试报告
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值