测试平台界面开发实战
Web 后端开发实战
学习价值
实战需求
测试用例管理系统旨在提供一个简洁、高效的解决方案,用于管理测试过程中的用例信息。该系统将支持测试用例数据的增删改查操作,并以科学化、系统化和规范化的方式维护信息。
以 Flask 作为开发框架完成用例管理系统的接口实战需求
功能拆解
-
基于 flask 框架实现 Web 版用例管理系统
-
系统基于功能需要提供
列表
,添加
,修改
,删除
等功能的相关接口 -
所有数据需通过 MySQL 数据库进行持久化存储
- 数据表
testcase
包含以下字段: cid
: 用例编号,主键module
: 功能模块title
: 测试标题priority
: 优先级别condition
: 前置条件step
: 测试步骤expected
: 预期结果actual
: 实际结果
- 数据表
-
列表接口
GET
请求方式返回列表页面POST
请求方式,以JSON
格式返回所有测试用例数据
-
添加接口
GET
请求方式返回添加用例页面POST
请求方式,以JSON
格式返回所有测试用例数据,包含新添加的数据
-
修改接口
- 所有修改相关请求需要携带要修改学生的
ID
信息 GET
请求方式返回修改页面POST
请求方式,以JSON
格式返回所有测试用例数据包含修改后的数据GET
请求方式,以JSON
格式返回被修改测试用例在修改页面回显的数据
- 所有修改相关请求需要携带要修改学生的
-
删除接口
- 所有修改相关请求需要携带要删除学生的ID信息
GET
请求方式删除指定学生信息并在列表页显示删除后的结果
实战代码
数据库准备
# 创建数据库
create database testcase charset=utf8;
# 切换数据库
use testcase
# 查看数据库中有哪些数据表
show tables;
# 创建数据表(字段根据需求去创建)
create table cases(cid int primary key auto_increment, cmodule varchar(100), ctitle varchar(255), cpriority int, ccondition varchar(255), cstep varchar(255), cexpected varchar(255), cactual varchar(255));
# 插入数据
insert into cases values(1,"登陆", "使用正确帐号密码登陆",1, "打开登陆页面","1.输入帐号;<br>2.输入密码;<br>3.点击登陆按钮","登陆成功并跳转","登陆成功并跳转");
insert into cases values(2,"登陆", "使用正确帐号错误密码登陆",1, "打开登陆页面","1.输入帐号;<br>2.输入密码;<br>3.点击登陆按钮","登陆失败并提示密码错误","登陆失败并提示密码错误");
insert into cases values(3,"登陆", "使用错误帐号正确密码登陆",1, "打开登陆页面","1.输入帐号;<br>2.输入密码;<br>3.点击登陆按钮","登陆失败并提示帐号错误","登陆失败并提示帐号错误");
Flask 服务器配置
from flask import *
from pymysql import *
from flask_cors import CORS
# 创建 flask 实例
app = Flask(__name__)
# 连接数据库
db_connect = Connect(host="127.0.0.1", port=3306, user="root", password="123123123", database="testcase", charset="utf8")
# 首页接口
@app.route("/")
def index():
return render_template("index.html")
# 首页数据接口
@app.route("/list")
def list():
# 查询数据库得到所有的数据展示
# 获取游标对象
cursor = db_connect.cursor()
sql_str = ''' select * from cases; '''
cursor.execute(sql_str)
data = cursor.fetchall()
datas = []
for item in data:
s = {}
s["cid"] = item[0]
s["module"] = item[1]
s["title"] = item[2]
s["priority"] = item[3]
s["condition"] = item[4]
s["step"] = item[5]
s["expected"] = item[6]
s["actual"] = item[7]
datas.append(s)
cursor.close()
return datas
# 添加页面接口,和添加数据接口
@app.route("/add", methods=["GET", "POST"])
def add():
# 根据请求方式区别不同的操作
if request.method == "GET":
return render_template("add.html")
else:
# 将添加提交过来的数据保存到数据库中
module = request.values.get("module")
title = request.values.get("title")
priority = request.values.get("priority")
condition = request.values.get("condition")
step = request.values.get("step")
expected = request.values.get("expected")
actual = request.values.get("actual")
sql_str = ''' insert into cases (cmodule, ctitle, cpriority, ccondition, cstep, cexpected, cactual) values(%s,%s,%s,%s,%s,%s,%s) '''
cursor = db_connect.cursor()
cursor.execute(sql_str, [module, title, priority,condition,step,expected,actual])
# 提交更改操作,不提交不生效
db_connect.commit()
cursor.close()
return redirect("/")
# 修改数据接口
@app.route("/change/<cid>", methods=["GET", "POST"])
def change(cid):
# 根据请求方式区别不同的操作
if request.method == "GET":
return render_template("change.html")
else:
# 将数据库中的数据找出来修改后再保存到数据库中
# 将添加提交过来的数据保存到数据库中
module = request.values.get("module")
title = request.values.get("title")
priority = request.values.get("priority")
condition = request.values.get("condition")
step = request.values.get("step")
expected = request.values.get("expected")
actual = request.values.get("actual")
sql_str = ''' update cases set cmodule=%s, ctitle=%s, cpriority=%s, ccondition=%s, cstep=%s, cexpected=%s, cactual=%s where cid = %s '''
cursor = db_connect.cursor()
cursor.execute(sql_str, [module, title, priority,condition,step,expected,actual,cid])
# 提交更改操作,不提交不生效
db_connect.commit()
cursor.close()
return redirect("/")
# 用来返回修改信息时的回显数据
@app.route("/changeData/<cid>")
def changeData(cid):
cursor = db_connect.cursor()
sql = '''select * from cases where cid = ''' + cid
cursor.execute(sql)
item = cursor.fetchone()
data = {}
data["cid"] = item[0]
data["module"] = item[1]
data["title"] = item[2]
data["priority"] = item[3]
data["condition"] = item[4]
data["step"] = item[5]
data["expected"] = item[6]
data["actual"] = item[7]
cursor.close()
return data
# 删除信息接口
@app.route("/delete/<cid>")
def delete(cid):
curosr = db_connect.cursor()
sql = ''' delete from cases where cid = %s '''
curosr.execute(sql, [cid])
db_connect.commit()
curosr.close()
return redirect("/")
if __name__ == '__main__':
CORS(app, supports_credentials=True)
app.run(debug=True, port=8888)
注意: 服务器程序运行起来前,需先建立 templates
文件夹,并建立 index.html
、add.html
和 change.html
三个文件。
总结
测试平台开发是用于创建和维护用于自动化测试、性能测试、功能测试、回归测试等的软件平台的过程。旨在帮助软件开发团队更高效地进行测试活动,确保软件产品的质量。