测试文件和数据库文件

news2024/9/23 19:47:05

接口测试

 flaks项目入口文件manage.py路由配置

import requests

#首先面向对象作封装,避免相同代码反复编写
class HttpApiTest:
    def test_get(self,url,data={}): 
#用来测试get方法的接口
#self通过共享self类中间的变量
#url用来请求接口
#data可传可不传
       res =requests.get(url,params=data)#params请求的参数
       return res.text#将结果属性text返回



#执行的操作一定要写道main入口里,声明写在外头
if __name__=="__main__":
   httpapi = HttpApiTest()
   res = httpapi.test_get("http://127.0.0.1:5000",data={"id":"123"})
   print(res)


通过访问接口并且传递id参数测试接口是否正常工作

from flask import request

@app.route('/',methods=['GET'])
def index():#首页
  res = {"msg":"hello"} #字典
  return jsonify(res) #字典序列化为json数据类型
  
  #通过url接收请求参数
  id=request.args.get("id",None)
  print("请求的参数id是{}".format(id))

项目入口文件通过request.args.get查找客户端传递过来的名为”id“的参数,如果未查询到该参数,则默认返回None,如果查询到则返回键值对的参数,例如id:123

test.py文件相当于客户端,客户端发送请求到manage.py定义的接口,确认接口是否正常工作,主要是测试以下内容

  1. 可访问性:确认客户端能否成功访问接口(如 manage.py 定义的路由),检查服务器是否正常运行。

  2. 参数传递:验证客户端是否能够通过接口传递参数,确保这些参数能够被正确接收和处理。

  3. 响应正确性:检查接口返回的响应是否符合预期,包括状态码、响应体内容和格式等。

  4. 边界情况:测试接口在不同输入(如有效、无效或缺失的参数)情况下的表现,确保其稳定性和错误处理能力。

  5. 性能:在一定负载下测试接口的响应时间和处理能力,确保其在高并发情况下依然正常工作。

接口是否正常工作有两个检验方法:

1.运行test.py测试脚本,会输出项目入口文件manage.py中路由配置直接编写的信息
项目入口文件路由配置:

测试文件运行输出:


可以看到,运行测试脚本文件之后输出的信息是项目入口文件路由配置中直接书写的信息


 

2.保存manage.py项目入口文件的更改,启动flask应用的命令行会自动打印输出测试脚本传递过来的参数

可以看到启动项目的命令行中已经输出了测试文件中传递过来的参数,但是可能因为Flask 默认的日志处理机制覆盖了标准输出,所以能看到id=123而不是”请求的id参数是123“这样子了

总之,路由处理函数中既可以发送数据到客户端,也可以接收客户端传来的请求参数。这种方式使得 Flask 应用能够与客户端进行交互。

一.新建数据库,要能存储图片表情之类的数据

要想连接mysql,点击”+“,创建数据源

配置MySQ连接信息并下载需驱动
设置用户为root,密码自己设置

二.数据库配置----数据库文件+入口文件注入数据库文件进行配置

数据库文件database.py,所有数据库相关的链接,配置,实例,都写到数据库文件中

from flask_sqlalchemy import SQLAlchemy
import pymysql
pymysql.install_as_MySQLdb()
db=SQLAlchemy()
#db使用方法
#在入口文件注入操作

#导入数据库实例
from database import db

#配置mysql数据库
app.config["SQLALCHEMY_DATABASE_URI"] = 'mysql://root:password@localhost:3306/social'
#等号前:数据库链接
#等号后:数据库类型,用户名,密码,路径(链接地址),端口号(默认3306),具体数据库名称

#自动提交sql请求
app.config["SQLALCHEMY_COMMIT_ON_TEARDOWN"]=True

#初始化操作
db.init_app(app)
#以上都是在flask实例对象中配置的关于mysql数据库的信息,db 是一个 SQLAlchemy 的实例,调用 init_app(app) 方法后,db 会获取 Flask 应用的配置信息。完成初始化之后就可以在应用中使用db对象来进行数据库的操作。

 

  • SQLAlchemy 是一个在python中使用的ORM工具,允许开发者以对象的方式定义和操作数据库模型 ,虽然最终执行的操作是基于 SQL 语句的,但开发者主要与 Python 对象交互。
  • ORM(对象关系映射):SQLAlchemy 将数据库表映射为 Python 类,将表的行映射为类的实例。通过操作这些对象,开发者可以进行增、删、改、查等操作,而不需要直接写 SQL 语句。

  • 当你使用 SQLAlchemy 进行操作时,SQLAlchemy 会根据你的对象操作生成相应的 SQL 语句。

  • pymysql 作为驱动,负责将 SQLAlchemy 生成的 SQL 语句发送到 MySQL 数据库,并处理数据库返回的结果。

    SQLAlchemy 提供 ORM 功能和接口,pymysql 处理实际的数据库通信,而 MySQL 则是存储和管理数据的数据库系统

 

  • 在MySQL数据库可视化工具中新建一个空白数据库
  • 在python中使用SQLAlchemy定义类,这些类能映射到想要在数据库中创建的表(一个类对应一个表)
  • 一个类中的多个实例对应一个表中多行数据

原本还疑惑怎么这么麻烦呢? 要创建SQLAlchemy实例对象db,接着在入口文件中用flask实例对象app对数据库连接信息进行配置,还有sql自动提交进行配置,导入db,db调用配置好的app实例,然后db就能对数据库进行操作。


为啥不直接sqlalchemy实例对象db直接进行数据库信息的配置,在入口文件导入db,同样db就对数据库进行操作了。


这就是规矩!!!flask实例对象用于配置数据库连接信息,sqlalchemy实例对象通过flask应用的配置来获取这些信息,sqlalchemy实例对象db调用flask实例对象进行初始化,这样db就能访问flask应用的配置了

  3306端口号是在datagrip数据库可视化工具中点击“+”创建数据源,连接MySQL数据库,然后进行MySQL信息配置中设置的。配置mysql数据库时,通过端口号访问到MySQL数据库管理系统,然后再通过具体数据库名称social对具体数据库进行数据操纵

flask实例对象功能

  1. 路由管理:定义应用的 URL 路由和处理请求的视图函数。

  2. 中间件:添加请求和响应的处理逻辑,例如日志记录、认证等。

  3. 蓝图:组织大型应用的模块化结构,便于管理和扩展。

  4. 配置管理:设置其他应用配置(如调试模式、静态文件目录等)。

  5. 扩展管理:集成各种 Flask 扩展,添加功能模块,如用户认证、表单处理等。

这些功能使得 Flask 成为一个灵活且强大的 web 框架。

在social数据库中创建表(详见mysql图形化界面-datagrip) 

三.数据库中创建表

点击”+“创建每列的值,完之后点击箭头提交,表就建好了

用来测试接口数据库能不能连上

四.入口文件路由配置中查询数据库:

  #查询数据库
  userlist = db.session.execute("select * from user").fetchall()
  #session sql语句,execute执行,fetchall获取所有。查询所有用户
  print(userlist)

浏览器访问​​​​​​​127.0.0.1:5000  触发查询操作

正常应该返回数据库里边信息,例如[(1,'123@123.net','123'),(2,'456@456.net','456')]

哈哈哈,不正常就该像我这样。不干了,干饭!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2158324.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

明日周刊-第21期

断更了一段时间,现在开始续上。本周的最大的杭州科技活动应该就是云栖大会了,一年一度的云栖大会也不知不觉经过了十年,趁着周六我也去好好体验了一番。(ps:下周炉石传说重回国服了,各位都准备好了吗&#…

多个异构系统用户权限如何统一管理?

企业内部往往部署了多个业务系统来支撑不同的业务流程,然而,这些系统之间的标准不一,导致跨系统操作时权限不透明,难以确保数据安全与合规操作。同时,频繁的权限变更与维护工作量大且效率低,给企业带来了诸…

干货:企业微信批量删除客户指南!

随着客户量的增加,管理员常常面临一个问题——如何批量删除客户。其实新版本的应用支持批量删除一些单向客户,可以一次性把外部联系人名额空出很多来了。 具体的操作步骤是: 手机端软件-通讯录-我的客户-微信客户-全部微信客户-单向微信客户…

2024已然过半,AI技术卷到哪儿了?

可以说,科技的发展真的是日新月异,2024年年初,大模型Sora的出现,改变了短视频行业的演变方向,使得AI技术不再只是停留在文生文,文生图阶段,而是发展到了文生视频领域。2024年5月,回忆…

短剧APP开发功能特点,短剧爆火下的市场发展

今年以来,短剧迅速爆发,为市场带来了不菲的成绩!短剧的火爆,直接推动了短剧的创作,更是激发了短剧制作商的创作热情,各种类型的短剧层出不穷,为观众带来了多种多样的短剧选择。 近年来&#xf…

区块链中的去中心化,点对点网络系统,所有权本质,,双花问题的详解

去中心化的概念 区块链去中心化是指一种分布式数据库技术,它通过加密算法和共识机制在网络中的多个节点上存储数据,从而实现数据的去中心化管理。在区块链去中心化中,没有中心化的权威机构或服务器来控制或验证数据,而是依赖于网络…

又到了金九银十,你的简历写好了吗?

又到了金九银十的招聘季,不过这几年求职环境越来越差,相比于跳槽找新机会,大家可能更倾向于守住自己手头的工作,稳字当头。当然,也有很多工作实在干烦了的朋友,想要换个新赛道试试。今天就给大家带来一个新…

玩转Google SERP API 说明

Google SERP API 对接说明 Google SERP(Search Engine Results Page)是用户在Google搜索引擎中输入查询后看到的结果页面。它显示自然搜索结果、广告、特色摘要、知识图谱以及图片、视频等多种内容,旨在为用户提供最相关的信息。 本文将详细…

防火墙详解(三)华为防火墙基础安全策略配置(命令行配置)

实验要求 根据实验要求配置防火墙: 合理部署防火墙安全策略以及安全区域实现内网用户可以访问外网用户,反之不能访问内网用户和外网用户均可以访问公司服务器 实验配置 步骤一:配置各个终端、防火墙端口IP地址 终端以服务器为例&#xff…

go解决引入私有包报错“Repository owner does not exist“的两种方式

当你写好引入的私有包,执行go mod tidy报错: Gogs: Repository owner does not exist fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 目前我的两种解决方案: 一、拉群整个…

论文集搜索网站-dblp 详细使用方法

分享在dblp论文集中的两种论文搜索方式:关键字搜索,指定会议/期刊搜索。 关键字搜索 进入dblp官方网址dblp: computer science bibliography,直接在上方搜索栏,搜索关键字,底下会列出相关论文。 指定会议/期刊搜索 …

Java多线程(1)—线程基础

一、关于线程 1.1 简介 计算机线程(Thread)是操作系统能够进行运算调度的最小单位。线程的优势在于提高了程序的效率和响应能力,尤其在处理 I/O 操作或多任务时。多线程编程能够充分利用多核处理器的计算能力,达到更高的性能。 …

解决IDEA出现:java: 程序包javax.servlet不存在的问题

问题截图: 解决如下: 1. 点击文件——>项目结构 2. 点击库——>点击——>点击java 3. 找到Tomcat的文件夹,找到lib文件夹中的servlet-api.jar,点击确定 4. 选择要添加的模块 5. 点击应用——>确定

Deep Guided Learning for Fast Multi-ExposureImage Fusion

Abstract 我们提出了一种快速多重曝光图像融合(MEF)方法,即 MEF-Net,用于任意空间分辨率和曝光次数的静态图像序列。 我们首先将输入序列的低分辨率版本提供给全卷积网络以进行权重图预测。 然后,我们使用引导滤波器联…

NGO电工钢行业分析:未来几年年复合增长率CAGR为2.7%

NGO电工钢,顾名思义,其磁性具有各向同性性(也叫各向同性电工钢),广泛应用于制造各类电机、发电机铁心。 据QYResearch调研团队最新报告“全球NGO电工钢市场报告2024-2030”显示,预计2030年全球NGO电工钢市场…

镜舟科技面对亿级数据分析场景,如何做到金融级放心用?

引言 中国金融数据库行业研究报告(2023)指出,自 2020 年的⾦融信创元年, 中国数据库迎来了⾼速发展。 进入 2024 年,镜舟科技的商业拓展速度进一步加快。在过去半年里,镜舟科技与十余家头部股份制银行、…

【人工智能】Transformers之Pipeline(十九):文生文(text2text-generation)

目录 一、引言 二、文生文(text2text-generation) 2.1 概述 2.2 Flan-T5: One Model for ALL Tasks 2.3 pipeline参数 2.3.1 pipeline对象实例化参数 2.3.2 pipeline对象使用参数 ​​​​​​​ 2.3.3 pipeline返回参数 ​​​​​​​​​​​…

C语言 fwirte 函数 - C语言零基础入门教程

目录 一.fwirte 函数简介二.fwirte 函数使用三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.fwirte 函数简介 C 语言文件读写,fread 函数用于读取文件中的数据到指定缓冲区中,而 fwrite 函数用于把缓冲区数据写入到文件…

【Redis技能熟练掌握之十年内功】

Redis技能熟练掌握之十年内功 1.redis是什么?为什么要使用redis?2.redis一般应用于什么场景(四个场景)?3. Redis持久化机制是什么?各自的优缺点?一般咋么用?4. redis五个基础类型支持…