接口测试(9)
本来的打算是更新完8之后呢,后期就不在更新了,最近学习flask后,手又想开发个平台吧,吧我之前写的框架给运用上,形成一个简单的接口测试化平台吧,--IAPTest
我给他起名,有没有感觉很霸气啊,其实撤这么多不如来点使用的,其实做这个平台呢,更多的是对flask学习的一个利用吧。当时自己构思了一下午,其实也不知道大家想要的都是什么样子的,所以呢,就开始做了下面的设计。
大题上,第一版的demo版本的需求就是这样的,因为这里没有考虑其他太多, 那么接下来就是来开始选择了,我选择的是flask 框架,前端呢 ,我用的是bootstarp框架,
那么接下来,我是要对我的数据库进行设计。这里要提的是我对权限的设计呢,我更多的是选择了一个较为简单的方式,我去用一个字段去进行权限控制,我使用level字段, 0就表示我这个用户是普通用户,1就是管理员用户,这里很多地方的删除都做了管理员和非管理员的区别,管理员可以对所有的进行删除,但是普通管理是不能的, 用户管理界面只能管理员去运作这个。
下面给下我数据库上面的代码片段。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer(),primary_key = True ,autoincrement = True ) username = db.Column(db.String( 63 ),unique = True ) password = db.Column(db.String( 252 )) user_email = db.Column(db.String( 64 ),unique = True ) status = db.Column(db.Integer(),default = 0 ) level = db.Column(db.Integer(),default = 0 ) phone = db.relationship( 'TestResult' , backref = 'users' , lazy = 'dynamic' ) def __repr__( self ): return self .username def set_password( self ,password): self .password = generate_password_hash(password) def check_password( self ,password): return check_password_hash( self .password,password) class Interface(db.Model): __tablename__ = 'interfaces' id = db.Column(db.Integer(),primary_key = True ,autoincrement = True ) project_name = db.Column(db.String( 252 )) models_name = db.Column(db.String( 252 )) Interface_name = db.Column(db.String( 252 )) Interface_url = db.Column(db.String( 252 )) Interface_meth = db.Column(db.String( 252 ),default = 'GET' ) Interface_par = db.Column(db.String( 252 )) Interface_back = db.Column(db.String( 252 )) Interface_user_id = db.Column(db.Integer(),db.ForeignKey( 'users.id' )) def __repr__( self ): return self .Interface_name class InterfaceTest(db.Model): __tablename__ = 'interfacetests' id = db.Column(db.Integer(), primary_key = True , autoincrement = True ) project = db.Column(db.String( 252 )) model = db.Column(db.String( 252 )) Interface_name = db.Column(db.String( 252 )) Interface_url = db.Column(db.String( 252 )) Interface_meth = db.Column(db.String( 252 )) Interface_pase = db.Column(db.String( 252 )) Interface_assert = db.Column(db.String( 252 )) Interface_user_id = db.Column(db.Integer(), db.ForeignKey( 'users.id' )) def __repr__( self ): return self .yongli_name class TestResult(db.Model): __tablename__ = 'tstresults' id = db.Column(db.Integer(),primary_key = True ,autoincrement = True ) Test_user_id = db.Column(db.Integer(),db.ForeignKey( 'users.id' )) test_num = db.Column(db.Integer()) pass_num = db.Column(db.Integer()) fail_num = db.Column(db.Integer()) skip_num = db.Column(db.Integer()) test_time = db.Column(db.DateTime(),default = datetime.datetime.now()) hour_time = db.Column(db.Integer()) test_rep = db.Column(db.String( 252 )) test_log = db.Column(db.String( 252 )) def __repr__( self ): return self . id |
这里的代码呢,我就不一一赘述, 接口,接口测试用例,接口执行结果,都是和用户表一对多的关系,有了数据表,我们就可以去创建我们的数据库了,在创建的时候,我们还需要加一个配置文件,这里存放着一些数据库的基本配置相关的。
1 2 3 4 5 6 | SECRET_KEY = 'BaSeQuie' basedir = os.path.abspath(os.path.dirname(__file__)) SQLALCHEMY_DATABASE_URI = "sqlite:///" + os.path.join(basedir, "data.sqlite" ) SQLALCHEMY_COMMIT_ON_TEARDOWN = True SQLALCHEMY_TRACK_MODIFICATIONS = False CSRF_ENABLED = True |
这样我们就可以去生成我们的数据库,
界面来呢就是前段界面的编写,和后端处理函数的编写,这里呢,我就不一样叙述了,这里呢 给大家下面的几个地方的代码片段,展示下,主要是上传和下载这一块。
主要是测试日志的下载。
1 2 3 4 5 6 | @app .route( '/load/<string:filename>' ,methods = [ 'GET' ]) def load(filename): basedir = os.path.abspath(os.path.dirname(__file__)) file_dir = os.path.join(basedir, 'upload' ) response = make_response(send_from_directory(file_dir,filename,as_attachment = True )) return response |
单个用例的执行呢,我这里没有生成测试报告,我吧这个主要用到一个用例的检验上去,
多个用来呢,我这里用的是之前我在8上面提到的测试框架,在这里我做了一些修改,大的没有怎么改动,只是对部分代码进行优化。
接下来就是给大家展示下效果图
1.这是项目的目录
到这里呢,我的基本的测试框架就已经搞定了。前前后后一共大概花费了我三个周的时间吧,第一个demo版本就这么横空出世了。
这个周末北京的天气还算晴朗,天也不热,写起来代码也是六六的。
有疑问可以加我qq:952943386或者我的qq群194704520
希望大家一起冲菜鸟飞到更高
有钱的也可以给我捧下。
我是一个大专生,也是一个人奋斗到今天。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
2016-07-23 python3.x爬取美团信息
2016-07-23 基于python3的手机号生成脚本
2016-07-23 python3.x 学习心得