python进阶-mock接口

setting.py

MYSQL_HOST=‘192.168.127.139‘
PASSWORD=‘123456‘
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访问接口



原文地址:https://www.cnblogs.com/alasijia/p/8334861.html

时间: 2024-08-01 08:29:55

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

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

本次测试开发系列给大家分享一下怎么用python开发mock接口.本次介绍下什么是mock接口,以及咱们开发之前需要做的准备. 什么是mock接口呢,举个栗子,你在一家电商公司,有查看商品.购物.支付.发货.收获等等等一大堆功能,你是一个测试人员,测测测,测到支付功能的时候,你就要调用第三方支付接口了,真实支付,直接扣你支付宝/微信/银行卡里面的钱了,这下大事不好,测个试还得把自己钱搭进去(当然一般公司都会报销测试的支付费用,但是走报销麻烦),还有一些大额支付的的,可能你账户里面根本就没那么钱,

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

上一篇咱们已经把开发前的环境准备好了,还需要再做一点准备,你的账户信息是存在哪的呢,当然是存在数据库里的,咱们在去支付,扣钱的时候,肯定是从数据库里面操作的,去更新账户表里面的数据,所以咱们先要把数据库准备好,建好账户表,初始化几条账户信息,这样才能完整的把这个mock接口给完成. 这篇咱们就学习一下python怎么操作数据库,怎么执行sql,数据库使用sqlite,sqlite是一个跨平台开源的轻量级关系型数据库,不需要配置和安装直接就可以使用,sql语句和mysql.sqlserver.or

Python之mock接口开发

mock接口开发需要使用flask模块,安装flask模块 pip install flask import flask import json server=flask.Flask(__name__) #__name__是指把当前python文件当作一个服务 @server.route('/api/login',methods=['post','get']) #默认不传methods是get请求 def login(): username=flask.request.values.get('u

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

最后一篇了,终于进入主题了,前面的准备工作都已经做好了,下面就开始写逻辑的代码了,代码我已经写好了,每行都加了注释. ok,代码就是上面的,每个单独的功能都拆分出来做了单独的函数来工作,这样代码就不会显得比较乱了. 下面咱们来测试一下,看看有没有bug 先来个正常的通过性测试: 再来俩异常验证,一个价格错误的,一个用户不存在的. 大功告成,都验证通过了,当然还有很多没有验证,留着大家动动手吧.

有哪些比较好的讲Python进阶的博客?

Python是一种动态解释型的编程语言,它可以在Windows.UNIX.MAC等多种操作系统以及Java..NET开发平台上使用.不过包含的内容很多,加上各种标准库.拓展库,乱花渐欲迷人眼.因此如何进阶Python显得非常重要. 接下来看看比较好的讲Python进阶的博客,我这有十个,希望对你有帮助. 第一个是Planet Python,这是最出名的python博客其中之一: 第二个博客是Eli Bendersky 的博客:Eli Bendersky's website: 第三个博客是Code

Python进阶(三十五)-Fiddler命令行和HTTP断点调试

Python进阶(三十五)-Fiddler命令行和HTTP断点调试 一. Fiddler内置命令 ??上一节(使用Fiddler进行抓包分析)中,介绍到,在web session(与我们通常所说的session不是同一个概念,这里的每条HTTP请求都称为一个session).界面中能够看到Fiddler抓取的全部HTTP请求.而为了更加方便的管理全部的session, Fiddler提供了一系列内置的函数用于筛选和操作这些session(习惯命令行操作Linux的童鞋应该能够感受到这会有多么方便

Python进阶(三十六)-Web框架Django项目搭建全过程

Python进阶(三十六)-Web框架Django项目搭建全过程 ??IDE说明: Win7系统 Python:3.5 Django:1.10 Pymysql:0.7.10 Mysql:5.5 ??Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站! Django 特点 强大的数据库功能 用python的类继承,几行代码就可以拥有一个丰富,动态的数据库操作接口(API),如果需要你也能执行SQL语句. 自带的强大的后台功能 几行简单的代码就让你的网

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

在软件开发领域中,人们经常会用到这一个概念--"设计模式"(design pattern),它是一种针对软件设计的共性问题而提出的解决方案.在一本圣经级的书籍<设计模式:可复用面向对象软件的基础>(1991年,Design Patterns - Elements of Reusable Object-Oriented Software)中,它提出了23种设计模式.迭代器模式就是其中的一种,在各种编程语言中都得到了广泛的应用. 本文将谈谈 Python 中的迭代器模式,主要内

Python进阶(九)----os,sys,hashlib模块

Python进阶(九)----os,sys,hashlib模块 一丶序列化模块 什么是序列化: ? 将一种数据结构,转换成一个特殊的序列(特殊字符串,用于网络传输,或文件保存) ? 真正的意义:变量从内存中变成可存储或传输的过程称之为序列化 json模块: ? 是所有语言公认的一种序列,最常用,支持的数据结构有限:"list(tuple), int .str ,bool,None,float." ### dumps ,loads : 主要网络传输 , 用于文件的读取. import j