推广 热搜: 可以  搜索引擎  page  企业  百度  个数  使用  选择  音视频  父亲 

Flask+mysql 实现增删改查接口开发+测试(图文教程附源码)

   日期:2024-12-31     移动:http://ww.kub2b.com/mobile/quote/11177.html

目录

一、前言

二、环境准备

2.1 安装python

2.2 安装mysql 

三、工具准备

3.1 安装pycharm

3.2 安装Navicat

3.3 安装postman

四、mysql数据库准备

4.1 Navicat连接

4.2 数据库准备

五、增删改查接口(服务)开发

5.1 表的增删改查操作 

5.2 增加接口服务

5.3 删除接口服务

5.4 修改接口服务

5.5 查询接口服务

六、接口测试

 6.1 测试增加接口服务

 6.2 测试删除接口服务

 6.3 测试修改接口服务

 6.4 测试查询接口服务

七、总结

八、展望

九、附录(源代码


       1.1 之前在练习了Django的博客项目,前后端不分离的,现在就想着把Flask框架也再熟悉一下,后续把接口返回的数据用vue显示。python 比较流行的框架是Django 和Flask,重要性不言而喻

       1.2 刚好是五一,发文符合劳动节精神,深圳又下雨,在家搬砖

2.1 安装python

       确保你的电脑安装了python,并正确配置好环境变量。查看版本命令

 

本文内容运行在python 3.6.1

2.2 安装mysql 

       确保你的电脑安装了mysql,并正确设置账号和密码,本机账号和密码为 root/root

 

本文内容mysql 5.7中运行通过

3.1 安装pycharm

       确保你的电脑安装了pycharm,我这里用的是pycharm professional 2017.3(已pojie

3.2 安装Navicat

       可视化数据库查询工具准备,工具很多,本文用的是拿手的Navicat 

3.3 安装postman

        postman是一款必会的工具,开发和测试都在用

4.1 Navicat连接

       连接名起一个test,主机输入localhost或者127.0.0.1,默认端口3306,输入用户名和密码root/root,点击链接测试,链接成功

4.2 数据库准备

       在链接上test数据源后,在test处右键,新建数据库,数据库名books,字符集utf-8,排序规则选择utf8_general_ci,点击确认,数据新建完成

注意:此处不新建表,从代码里面通过模型类建表 

       开发前先做一些准备工作,新建flask项目,file ->new project

 创建完成。我这里book是根目录,主文件我改名字app.py,不该也可以此时就可以右键启动了

控制台会打印 访问地址,点击访问 浏览器页面显示 Hello World!,我这里代码删了不贴图了。

 安装一些用的库,点击file->settings,flask、PyMySQL、SQLAlchemy、flask-sqlalchemy等(注意有些库使用的时候的名字和导入的时候的名字不一样,比如导入flask-sqlalchemy,代码里面却是flask_sqlalchemy

接着,逐步把以下代码添加到app.py文件中。先导入一些要用到的库

 

数据库设计,使用flask框架模型类添加,代码如下

先连接数据库,修改账号、密码、主机名、端口号、数据库名为你们使用的即可

 

模型类代码:下面建立一个books表,字段有id、title、author、read_status,注意字段大小和类型,这些都是事先要把需求确定好,不然测试肯定有问题。比如:有需求说作者不能超过20个字,下面这种设计120大小就不合适。这就是实际开发和学习的区别

 

通过下面这行代码把表创建好

 

查看数据库表DDL

5.1 表的增删改查操作 

       以下是增删改查方法代码

 

插播,以下代码解决跨域问题(这是我为后面准备开发页面用的

 

5.2 增加接口服务

       讲增加接口服务前,定义以下需要传的参数title、author、read_status,title不能重复

title、author、read_status是必传参数,title、author不能为空,read_status阅读状态只能为0和1

后续测试场景就从这里来,后面的同理

 

代码点评

  • 使用检查必需的参数是否存在,如果不存在则返回HTTP状态码400(Bad Request)。
  • 对于空字符串的判断,使用和,而不是与进行比较。
  • 使用将转换为整数类型。
  • 为了避免重复的书名,提取已存在的书名列表,并使用列表推导式构建。
  • 在返回错误响应时,包含了HTTP状态码400。
 

5.3 删除接口服务

       讲删除接口服务前,定义以下需要传的参数,id是必传参数,输入不存在的id删除报错图书不存在

 

代码点评

  • 不再使用进行空值判断,而是使用检查键是否存在于字典中。
  • 对于缺少必需的id参数,返回了HTTP状态码400(Bad Request)。
  • 对于找不到需要删除的图书,返回了HTTP状态码404(Not Found)。
  • 使用判断删除方法的结果,而不是使用。
  • 省略了不必要的,因为默认状态就是成功。
 

上面的代码有bug,如果改为

if not result:

会导致的效果是调用删除接口,但是实际上返回   需要删除的图书不存在!

 改为:原来的

if result is False:

就OK了 

但是我查chatgpt,又说是一样的。不是啥情况

5.4 修改接口服务

       在讲修改接口服务前,定义以下需要传的参数id、title、author、read_status是必传参数,title、author不能为空,read_status阅读状态只能为0和1,输入不存在的id报错需要修改的书籍id不存在

 

代码点评

  • 使用 列表来存储必传参数,遍历检查是否存在。
  • 使用列表推导式生成 ,避免在循环中重复拼接。
  • 使用 和 的形式来检查是否为空,更简洁。
  • 使用列表形式 来检查阅读状态,避免使用多个不等式判断。
  • 删除不必要的 变量。
  • 不需要显式地指定 HTTP 响应状态码,Flask 会根据返回的 JSON 对象自动设置状态码
 

5.5 查询接口服务

       在讲查询接口服务前,定义以下需要传的参数

不传id默认查询所有,传了id查询数据库为id的记录,传了id,id就不能为空

 

代码点评

  • 移除了冗余的条件判断和注释。
  • 使用进行空值检查,而不是与进行比较。
  • 将空字符串的判断条件改为,使代码更加简洁。
  • 在最后直接返回,避免重复的语句。

 

所有服务搞完了,启动项目

       接口写完,准备测试(实际开发中肯定是边开发边测试的,大家注意

用以下代码

 

或者手工往数据库先加一些数据用来测试,现在往里面添加

 6.1 测试增加接口服务

       测试如下

请求参数,json格式的

 
 

检查数据库,新增了记录

在这个基础上再次 send

书名重复,校验正确。其他的测试场景这里就不列了 

 6.2 测试删除接口服务

       测试如下,我们把刚才新增的书删除掉

请求参数

 
 

 删除成功

在这个基础上再次 send

图书不存在校验成功 

数据库记录已被删除 

 6.3 测试修改接口服务

       测试如下

我们修改第4本书

请求参数

 

 更新成功

 检查数据库

成功,其他的测试场景这里就不列了 

 6.4 测试查询接口服务

       测试如下

请求参数不传默认查询所有

 

send 

 返回数据

 

 与数据库一致

查询所有书籍成功

 通过id查询对应书籍,选择查第4本书,请求参数

 

结果 ,查询成功

 对照返回信息与数据库信息一致,验证ok

其他的测试场景这里也不列了,大家可以试下 ,比如传不存在的图书id

       测试场景真的很多,测试不通过就加校验,测试不通过就加校验,如此反复(当然在这个过程中复习了很多基础知识,所以实际开发肯定是按照需求来做校验,不然时间肯定是不够的。因为现在的迭代很快,作为测试考虑开发,确实是想怎么简单怎么来,站在测试的角度,又会觉得,这个开发咋这又没做校验啊,那也没做校验啊。。。。。。做好本职工作,要做好角色转换,轻松拿捏职场

       后续根据技能学习目标和职业生涯发展规则会继续学习,flask是测试开发必知必会的内容,希望大家好好掌握,做一个优秀的测试工程师

 

刚才试了在python 3.9版本中,“is” 要改为 “== ”号,不然报错 

有疑问评论区学习交流~ 

本文地址:http://ww.kub2b.com/quote/11177.html     企库往 http://ww.kub2b.com/ ,  查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关最新动态
推荐最新动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号