setting.py

MYSQL_HOST='192.168.127.139'
PASSWORD=''
PORT=3306
USER='root'
DB='stu'

tools.py

import pymysql,redis
from conf import setting
def op_mysql(sql):
conn=pymysql.connect(host=setting.MYSQL_HOST,user=setting.USER,
passwd=setting.PASSWORD,
port=setting.PORT,db=setting.DB,
charset='utf8'
)
cur=conn.cursor(cursor=pymysql.cursors.DictCursor)
cur.execute(sql)
sql_start=sql[:6].upper()
if sql_start=='SELECT':
res=cur.fetchall()
else:
conn.commit()
res='ok'
cur.close()
conn.close()
return res def op_redis(host,password,k,v=None,port=6379,db=0):
r=redis.Redis(host=host,password=password,port=port,db=db)
if v:
r.set(k,v)#有传key就说明是set操作
res='ok'
else:
res=r.get(k)
if res:#判断有没有get到数据
res=res.decode()#没有传key就说明是get操作,如果传的key不存在返回None,None没有decode
else:
res=None
return res

student.py

import flask,json#轻量级的web开发框架
from lib.tools import op_mysql
#接口 后台服务
server=flask.Flask(__name__) #返回python文件名,此处把python文件当成一个服务
#获取所有用户信息的接口
@server.route('/get_user',methods=['get','post'])#装饰器,接受两个参数:路径/请求方式
def get_all_user():
sql='select * from Student limit 10;'
res = op_mysql(sql=sql)
response=json.dumps(res,ensure_ascii=False)#把list转化成jason
return response#return 只能reture字符串 #添加学生的接口
@server.route('/add_user',methods=['post'])#装饰器,路径/请求方式
def add_user():
s_no=flask.request.values.get('s_no')#获得传入的参数
sname = flask.request.values.get('sname')#获得传入的参数
age = flask.request.values.get('age')
sex = flask.request.values.get('sex')
if s_no and sname and age and sex:#判断必填参数非空
sql = "insert into Student values ('%s','%s','%s','%s');" % (s_no,sname,age,sex)#添加学生的sql语句
#sql ="INSERT INTO Student VALUES ('%s','%s','%s','%s');"%(s_no,sname,age,sex)
res = op_mysql( sql=sql)#调用封装的mysql函数
response={'code':203,'msg':'成功了'}#请求成功后返回的信息
else:#必填项为空提示信息
response = {'code': 403, 'msg': '必填参数未填!'}
return json.dumps(response,ensure_ascii=False)#将response转化成jason返回,ensure_ascii=False,使中文正常显示,不指定的话,会显示中文对应的ascii

start.py

import sys,os
#os.path.dirname(__file__)
#print(sys.path)
BATH_PATH=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#取两次父目录 ,__file__代表当前目录,os.path.dirname取父目录
sys.path.insert(0,BATH_PATH)#加入环境变量
from lib.student import server
#server.run(port=8088,debug=True)
#想让别人访问,同一个局域网host='0.0.0.0',用实际的ip访问
server.run(port=8088,host='0.0.0.0',debug=True) 返回的信息是:

* Restarting with stat
* Debugger is active!
* Debugger PIN: 290-225-122
* Running on http://127.0.0.1:9999/ (Press CTRL+C to quit)

以 http://127.0.0.1:9999/add_user访问接口


python进阶-mock接口的更多相关文章

  1. 测试开发系列之Python开发mock接口(一)

    什么是mock接口呢,举个栗子,你在一家电商公司,有查看商品.购物.支付.发 货.收获等等等一大堆功能,你是一个测试人员,测测测,测到支付功能的时候,你就要调用第三方支付接口了,真实支付,直接扣你支付 ...

  2. 测试开发系列之Python开发mock接口(二)

    上一篇咱们已经把开发前的环境准备好了,还需要再做一点准备,你的账户信息是存在哪的呢,当然是存在数据库里的,咱们在去支付,扣钱的时候,肯定是从数据库里面操作的,去更新账户表里面的数据,所以咱们先要把数据 ...

  3. 测试开发系列之Python开发mock接口(三)

    于进入主题了,前面的准备工作都已经做好了,下面就开始写逻辑的代码了,代码我已经写好了,每行都加了注释,不明白的可以留言.   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 ...

  4. python语言(六)mock接口开发、发邮件、写日志、新Excel操作

    一.urllib模块 urllib模块是一个标准模块,直接import urllib即可,在python3里面只有urllib模块,在python2里面有urllib模块和urllib2模块. url ...

  5. Python(七) —— mock接口开发

    mock接口开发 接口开发有很多框架,诸如 Django,flask,相比较而言,flask 是轻量级web开发框架,用来开发 mock 接口的不二之选.那你可能会问,什么叫 mock 接口呢?moc ...

  6. Python进阶-XVII 非python的接口类、多态、python自己的封装

    1.python模拟java中的接口类 python中是没有接口类的概念的,因为它支持多继承,但是java不能,所以就提出一个接口类的概念 java : 面向对象编程 设计模式 —— 接口 接口类 : ...

  7. Python进阶:设计模式之迭代器模式

    在软件开发领域中,人们经常会用到这一个概念——“设计模式”(design pattern),它是一种针对软件设计的共性问题而提出的解决方案.在一本圣经级的书籍<设计模式:可复用面向对象软件的基础 ...

  8. Python进阶量化交易专栏场外篇7- 装饰器计算代码时间

    欢迎大家订阅<教你用 Python 进阶量化交易>专栏!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外已陆续推出一些手记来辅助同学们学习本专栏内容,目前已推出如下扩展篇: 在第一篇 ...

  9. Python进阶量化交易场外篇5——标记A股市场涨跌周期

    新年伊始,很荣幸笔者的<教你用 Python 进阶量化交易>专栏在慕课专栏板块上线了,欢迎大家订阅!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外会陆续推出一些手记来辅助同学们学习 ...

随机推荐

  1. spring实例化三:CglibSubclassingInstantiationStrategy

           在SimpleInstantiationStrategy类中,留下了包含MethodOverride对象的bd对象定义未做实现,做了抽象.CglibSubclassingInstanti ...

  2. RedisTemplate 中 opsForHash()使用 (没有测试过,copy的)

    1.put(H key, HK hashKey, HV value) //新增hashMap值 redisTemplate.opsForHash().put("hashValue" ...

  3. Java 加解密算法

    目前加密算法中分两种 一种是对称加密,一种是非对称加密 那么什么是对称加密呢?对称加密可以理解为加密和解密用的是一个钥匙. 而非对称加密,加锁用的是一个钥匙,而解锁用的是另外一个钥匙. 目前市面上用的 ...

  4. Linux文件删除的原理

    Linux文件iNode和block是否删除是通过  i_link  和 i_count 的计数值来判断的.只有i_count  和 I_link 同时为0 的 时候,文件的 iNode和block才 ...

  5. python if else elif statement

    name = input('what is your name?')if name.endswith('zd'): print("hello panzidong") name = ...

  6. Codeforces.520B.Two Buttons(正难则反)

    题目链接 \(Description\) 给定两个数\(n,m\),每次可以使\(n\)减一或使\(n\)乘2.求最少需要多少次可以使\(n\)等于\(m\). \(Solution\) 暴力连边BF ...

  7. Luogu5298 [PKUWC2018]Minimax

    太久没写博客了,过来水一发. 题目链接:洛谷 首先我们想到,考虑每个叶节点的权值为根节点权值的概率.首先要将叶节点权值离散化. 假设现在是$x$节点,令$f_i,g_i$分别表示左/右节点的权值$=i ...

  8. idea svn设置忽略提交文件

    1.找到版本控制位置 2.新建变动列表(装载忽略的文件内容) 3. 将默认的变动列表中需要忽略的文件拖入ignored列表下 4. 提交时,选择default即可. 设置完毕之后,可以在提交文件时将之 ...

  9. 三个div并排

    css: .div-inline{ display:inline} html: <div class="div-inline">第一个div盒子</div> ...

  10. Send Boxes to Alice

    E. Send Boxes to Alice 首先求出每一个位置的前缀和. 对答案进行复杂度为\(\sqrt{a[n]}\)的遍历,因为最后的答案不可能大于\(\sqrt{a[n]}\) for(ll ...