Skip to content

测试平台界面开发实战

Web 后端开发实战

学习价值

学习价值

实战需求

测试用例管理系统旨在提供一个简洁、高效的解决方案,用于管理测试过程中的用例信息。该系统将支持测试用例数据的增删改查操作,并以科学化、系统化和规范化的方式维护信息。

以 Flask 作为开发框架完成用例管理系统的接口实战需求

功能拆解

  1. 基于 flask 框架实现 Web 版用例管理系统

  2. 系统基于功能需要提供 列表添加修改删除 等功能的相关接口

  3. 所有数据需通过 MySQL 数据库进行持久化存储

    • 数据表 testcase 包含以下字段:
    • cid: 用例编号,主键
    • module: 功能模块
    • title: 测试标题
    • priority: 优先级别
    • condition: 前置条件
    • step: 测试步骤
    • expected: 预期结果
    • actual: 实际结果
  4. 列表接口

    • GET 请求方式返回列表页面
    • POST 请求方式,以 JSON 格式返回所有测试用例数据
  5. 添加接口

    • GET 请求方式返回添加用例页面
    • POST 请求方式,以 JSON 格式返回所有测试用例数据,包含新添加的数据
  6. 修改接口

    • 所有修改相关请求需要携带要修改学生的 ID 信息
    • GET 请求方式返回修改页面
    • POST 请求方式,以 JSON 格式返回所有测试用例数据包含修改后的数据
    • GET 请求方式,以 JSON 格式返回被修改测试用例在修改页面回显的数据
  7. 删除接口

    • 所有修改相关请求需要携带要删除学生的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.htmladd.htmlchange.html 三个文件。

总结

测试平台开发是用于创建和维护用于自动化测试、性能测试、功能测试、回归测试等的软件平台的过程。旨在帮助软件开发团队更高效地进行测试活动,确保软件产品的质量。