02. 接口测试的执行
2024年10月28日大约 4 分钟
02. 接口测试的执行
- 目标
- 能够对金融项目完成接口测试的工作
1. 接口测试环境准备
1. 项目部署(了解)
- 申请/购买服务器,并安装操作系统
- 安装基础软件,并完成初始化
- 安装JDK
- 安装MySQL
- 安装Tomcat
- 打包,并上传到服务器
- 启动项目
2. Mock接口服务
三⽅接⼝如何解决?
- 使⽤mock
Mock:模拟的、仿制 的、虚假的
Mock说明
- 什么是mock? -- 模拟接⼝
- 什么场景下会⽤mock?
- 依赖的接⼝未实现
- 依赖的接⼝响应速度慢
- 针对接⼝模拟各种异常
1. 接口Mock测试
在接口测试中,对于某些不容易构造或者不容易获取的接口,可以用一个模拟接口来代替
作用
- 可以用来解除测试对象对外部服务的依赖,使得测试用例 可以独立运行
- 模拟异常逻辑,异常逻辑往往很难触发,通过Mock可以人为的控制触发异常逻辑
- 团队可以并行工作
2. 接口Mock实现方式
- 使用第三方mock平台
- 自己开发mock服务
- 使用mock框架搭建mock服务
3. Python + Flask开发mock服务
提示: Flask是一个用Python编写的轻量级Web应用程序框架,使用该框架可以非常方便的开发Web项目
环境搭建
安装Flask :使用pip工具安装: pip install Flask
验证:在命令行里输入flask --version查看Flask是否安装成功
登录示例实现步骤
编写Flask程序
启动运行,像正常运行普通python程序一样即可
访问,打开浏览器,在地址栏里输入http://127.0.0.1:5000/index
from flask import Flask, jsonify # 创建一个应用对象 app = Flask(name) # 定义视图函数,设置路由规则 @app.route("/index") def index(): return "hello mock" @app.route("/login", methods=["POST"]) def login(): data = { "code": 10000, "uid": 1001, "token": "xxx" } # return jsonify(data) return "登录成功", 200, jsonify(data) if __name__ == 'main': # 启动WEB服务器 app.run()
4. Mock接口服务
提示
- 使用Python + Flask搭建web服务,通过Requests实现回调接口的调用!
Mock接口列表:
- 开户
- 充值
- 查询
- 余额
- 投资
- 主动投标
- ...
@app.route("/muser/publicRequests", methods=["GET", "POST"])
def mock():
CmdId = request.form.get("CmdId") # 开户
if CmdId == "UserRegister":
return userRegister() # 充值
elif CmdId == "NetSave":
return NetSave()
# ...
else:
print("未知操作!!!")
return "OK"
# 开户
def userRegister():
# 获取请求参数
# 构造回调请求数据
# 保存用户信息到数据库
return "UserRegister OK"
2. 接口测试数据准备和清理
1. 接口测试数据准备
1. 测试数据准备方式
- 手动操作系统进行构造
- 要求对应功能已经实现
- 效率比较低
- 适合不需要频繁构造的数据
2. 调用其它接口构造
- 依赖数据准备接口的正确性
- 接口用例中各个API的耦合度比较高
3. 直接操作数据库
- 比较灵活
- 对数据库的表结构熟悉程度要求比较高(某一个接口的数据准备 可能涉及到多张表操作)
- 数据库表结构发生变化了,可能会导致之前的用例执行失败
4. 测试数据准备方式-如何选择
- 在工作中,需要根据实际情况来选择数据准备的方法
- 如果对数据库操作比较方便,可以直接操作数据库
- 对于逻辑比较复杂,需要操作数据库多张表的情况,可以考虑采 用调用其它API的方式准备数据
- 对于只需要准备一次,并且对应功能已经实现的情况,可以直接 手动操作系统来准备
5. 测试数据准备实践
- 需要准备的测试数据
- 借款人基础数据
- 借款标数据
1. 测试数据准备实践
- 手动构造借款人基础数据
- 操作步骤
- 打开用户系统
- 注册借款人账号
- 开通资金托管账号
- 申请额度,管理员后台审核通过
- 操作步骤
- 直接操作数据库构造借款标数据
- 注意:也可以通过手动操作系统的方式来构造
- 借款相关表
- fn_loan:借款标主表
- fn_loan_info:借款标明细表
- fn_loan_amount:借款额度表
- fn_loan_amount_log:额度变化日志表
3. 接口测试数据清理
1. 测试数据清理介绍
- 为什么要清理测试数据?
- 还原到测试前的环境
- 实现测试用例多次重复执行
- 减少对其它测试用例的数据影响
- 如何清理测试数据
- 调用删除接口进行清理
- 直接操作数据库进行删除
2. 测试数据清理实践
直接操作数据库删除用户信息
- 用户信息相关表
- mb_member:用户主表
- mb_member_info:用户信息表
- mb_member_login_log:用户登录日志表
- mb_member_register_log:用户注册日志 表
# 用户主表 delete from mb_member where name='xxx' # 用户信息表 delete from mb_member_info where member_name='xxx' # 用户注册日志表 delete from mb_member_register_log where member_name='xxx'
- 用户信息相关表
3. JMeter实现接口测试
下章节
4. 代码实现接口测试
下章节