• python -第七节课之接口开发mock接口


    开发接口

    实际场景,银行接口连接不通我们无法测试,需要我们开发接口去调银行的接口

    业务流程连贯起来

     测试场景写一个假的调用我们的不阻塞测试,原来返回的数据和测试场景我们自己构造

    不会的话还要让别人给你写接口,这是开发接口的需要

    python 依赖模块 mock 模块 

     安装模块 

    fastapi
    uvicorn

    写一个传参数的get接口
    import fastapi
    import uvicorn
    server=fastapi.FastAPI()#服务
    @server.get('/login')#装饰器@在浏览器可以访问路径/login
    def login(username:str,password:str):
    return {'username':username,'password':password}
    uvicorn.run(server,port=8888,debug=True)
    写一个自动返回的get接口
    import fastapi
    import uvicorn
    server=fastapi.FastAPI()#服务
    @server.get('/login')#装饰器@在浏览器可以访问路径/login
    def login(username:str,password:str):
    return {'username':username,'password':password}

    @server.get('/test')#装饰器@在浏览器可以访问路径/login
    def login():
    return {'msg':'你好'}
    uvicorn.run(server,port=8888,debug=True)

    在浏览器输入http://127.0.0.1:8888/docs 可以查看接口的信息

    http://127.0.0.1:8888/docs  代表本地ip自己访问让别人访问就要修改 host='0.0.0.0'
    uvicorn.run(server,port=8888,debug=True,host='0.0.0.0')
    也可以使用flask模块一般都是有flask接口

    如果你想根据传的字段类型判断
    @server.get('/pay')
    def pay(money:float,status='1'):
    if status=='0':
    return {'code':1,'status':'fail'}
    elif status=='1':
    return {'code':0,'status':'success','balance':money}
    http://127.0.0.1:8888/pay?money='200'&status='1'
    如果你想调用数据库写一个注册接口怎么写呢?

    @server.post('/reg')
    def reg(username:str,password:str,cpassword:str):
    if username.strip() and password.strip() and cpassword.strip():
    if password.strip() != cpassword.strip():
    return {'code': -1, 'msg': '两次输入的密码不一样'}
    else:
    sql='select * from app_myuser where username="%s";'%username
    if tools.execute_sql(sql):
    return {'code':-1,'msg':'用户已经存在'}
    else:
    p = tools.my_md5(password)
    insert_sql = 'insert into app_myuser (username,passwd) value ("%s","%s");'%(username,p)
    tools.execute_sql(insert_sql)
    return {'code':0,'msg':'注册成功!'}
     
    else:
    return {'code':-1,'msg':'必填参数不能为空'}

     写个登录的接口

    @server.get('/login')
    def login(username: str, password: str):
    if username.strip() and password.strip():
    p = tools.my_md5(password)
    query_sql = 'select * from app_myuser where username= "%s" and passwd=%s;' % (username, p)
    if tools.excute(query_sql):
    return {'code': '0', 'msg': '登录成功'}
    else:
    return {'code': '-1', 'msg': '输入的用户名/密码错误'}
    else:
    return {'code': '-1', 'msg': '不能为空'}
     
    fastapi的优点可以生成接口文档
     下面介绍flask模块的应用
    import flask
    #轻量级的web开发框架
    import tools
    import json
    server = flask.Flask(__name__)
     
     
    @server.route('/login',methods=['post','get'])
    def login():
    username = flask.request.values.get('username','')
    password = flask.request.values.get('password','')
    # print(flask.request.cookies.get('PHPSESSID'))
    # print('json',flask.request.json)
    # flask.json.get('xxxx')#如果入参是json类型的话,这么搞
    # flask.request.cookies.get('xxx')#获取cookie里面的数据
    # flask.request.headers.get('xx')
    # flask.request.files.get("xxx")#文件
     
    if username.strip() and password.strip():
    p = tools.my_md5(password)
    query_sql = 'select * from app_myuser where username= "%s" and passwd="%s";' % (username, p)
    if tools.execute_sql(query_sql):
    return json.dumps({'code': '0', 'msg': '登录成功','sessionid':'xxxx'},ensure_ascii=False)
    else:
    return json.dumps({'code': '-1', 'msg': '输入的用户名/密码错误'})
    else:
    return json.dumps({'code': '-1', 'msg': '不能为空'})
     
    @server.route('/reg',methods=['post','get'])
    def reg():
    username = flask.request.values.get('username')
    password = flask.request.values.get('password')
    cpassword = flask.request.values.get('cpassword')
    if username.strip() and password.strip() and cpassword.strip():
    if password.strip() != cpassword.strip():
    return json.dumps({'code': -1, 'msg': '两次输入的密码不一样'})
    else:
    sql='select * from app_myuser where username="%s";'%username
    if tools.execute_sql(sql):
    return json.dumps({'code':-1,'msg':'用户已经存在'})
    else:
    p = tools.my_md5(password)
    insert_sql = 'insert into app_myuser (username,passwd) value ("%s","%s");'%(username,p)
    tools.execute_sql(insert_sql)
    return json.dumps({'code':0,'msg':'注册成功!'},ensure_ascii=False)
     
    else:
    return json.dumps({'code':-1,'msg':'必填参数不能为空'})
     
     
     
    server.run(host='0.0.0.0',port=8999,debug=True)

     我们要学会一种写法要熟练使用,比较好用的模块就是flask模块  

    flask 是一个轻量级的web平台框架  

    import flask,json
    server = flask.Flask(__name__)
    import tools
    @server.route('/login', methods=['post', 'get'])#写接口路径
    def login():
    #写参数
    username = flask.request.values.get('username', '')#传values,get和post都可以获取到
    password = flask.request.values.get('password', '')
    # print(flask.request.cookies.get('PHPSESSID'))#获取cookie
    # print('json',flask.request.json)
    # flask.json.get('xxxx')#如果入参是json类型的话,这么搞
    # flask.request.cookies.get('xxx')#获取cookie里面的数据
    # flask.request.headers.get('xx')
    # flask.request.files.get("xxx")#文件
    if username.strip() and password.strip():
    p=tools.my_md5(password)#把密码转成md5
    query_sql = 'select * from app_myuser where username= "%s" and passwd="%s";' % (username, p)#和数据库比对
    print(query_sql)
    if tools.execute_sql(query_sql):
    return json.dumps ({'code':'0','msg':'登录成功'},ensure_ascii=False)
    else:
    return json.dumps({'code':'1','msg':'输入的用户名和密码错误'},ensure_ascii=False)
    else:
    return json.dumps({'code': '-1', 'msg': '不能为空'})
    @server.route('/reg', methods=['post', 'get'])#写接口路径
    def reg():
    username = flask.request.values.get('username')
    password = flask.request.values.get('password')
    cpassword = flask.request.values.get('cpassword')
    if username.strip() and password.strip() and cpassword.strip():
    if password.strip() != cpassword.strip():
    return json.dumps({'code': -1, 'msg': '两次输入的密码不一样'})
    else:
    sql = 'select * from app_myuser where username="%s";' % username
    if tools.execute_sql(sql):
    return json.dumps({'code': -1, 'msg': '用户已经存在'})
    else:
    p = tools.my_md5(password)
    insert_sql = 'insert into app_myuser (username,passwd) value ("%s","%s");' % (username, p)
    tools.execute_sql(insert_sql)
    return json.dumps({'code': 0, 'msg': '注册成功!'}, ensure_ascii=False)#加ensurte显示中文

    else:
    return json.dumps({'code': -1, 'msg': '必填参数不能为空'})

    server.run(host='0.0.0.0',port=8999,debug=True)
    host写 0.0.0.就可以让别人访问了

     刚开始写是自己一个一个写,熟练的话自己开发一个mock接口开发平台 这是你要最终实现的操作  

    开发好了交给别人操作,让别人录制接口,以后想mock 让别人操作的

     这一步你就可以开发测试接口了



  • 相关阅读:
    vue2.0 实现click点击当前li,动态切换class
    关于事件冒泡和键盘事件 以及与Angular的区别
    vue 的事件冒泡
    Vue2键盘事件
    Vue2键盘事件:keydown/keyup...
    项目bug
    vue2 如何操作dom
    Redis配置文件说明
    Linux下ffmpeg的完整安装
    C++ error: passing 'const std::map<>]' discards qualifiers或pass-by-reference-to-const-map导致的“discards qualifiers”
  • 原文地址:https://www.cnblogs.com/weilemeizi/p/13691800.html
Copyright © 2020-2023  润新知