【接口自动化_12课_基于Flask搭建MockServer】

知识非核心点,面试题较少。框架搭建的过程中的细节才是面试要点

第三方接口,不方便进行测试,

自己要一个接口去进行模拟。去作为我们项目访问模拟接口。自己写一个接口,需要怎样写

一、flask:轻量级的web应用的框架

安装命令

复制代码
pip install flask

1、flask-web应用

1)一个最简单的例子

flask轻量级应用--下面就是实现一个最简单的web应用----单页面

复制代码
from flask import Flask, request

# 实例化一个应用,当前页面就是一个应用
app = Flask(__name__)


# 写接口 - 可以不写任何的逻辑,只返回正确的响应数据。

@app.route("/")# 通过装饰器设置对应的路由(路径)("/"表示当前的根目录)
def index():
    return "欢迎来到主页"


if __name__ == '__main__':
    # 当你修改代码,并且保存之后,则自动更新代码
    app.run(debug=True)

这个就是启动了一个应用 --可以理解是一个登录页面,无数据输入,还需要另外写一个数据输入的程序

本地启动后,可以在浏览器访问这个地址:http://127.0.0.1:5000

效果:

2)加上请求方法,post,提供给外部的接口和方法

然后,我们模拟一下请求四要素,再发起,相当于一个请求,此时再去看这个flask应用的日志,可以看到请求了

3)请求方法,get

2、 搭建一个登录应用

1)字符串模式的

1.1)搭建应用
复制代码
from flask import Flask, request

# 实例化一个应用
app = Flask(__name__)

#  从数据库拿到的数据
all_user = {"username": "hami", "password": "123456"}


# 写接口 - 不写任何的逻辑,只返回正确的响应数据。
# 设置对应的路由(路径)
@app.route("/")
def index():
    return "欢迎来到应用主页"


# 写一个登录接口, 开发指定的请求方法
@app.route("/api/login", methods=["POST"])
def login():
    # 数据的获取:以json格式进行获取数据
    res = request.get_json()
    print("用户请求的数据是:", res)

    # 用户填写的用户名和密码数据,key的话必须是username,password
    username = res["username"]
    password = res["password"]



    # 判断数据的正确性:结合你们业务常用场景去写几个
    """
    测试场景有哪些?
         1. 正确登录
         2. 参数为空
         3. 密码不正确
         4. 用户名不正确
         5. 参数填写错误
    """


#业务场景如下:
    if username == "" or password =="":
        return "参数不能为空~"
    elif username == all_user["username"] and password == all_user["password"]:
        return "登录成功"
    elif username == all_user["username"] and password != all_user["password"]:
        return "密码错误"
    elif username != all_user["username"]:
        return "用户名不存在"
    else:
        return "对应的参数请求错误"


if __name__ == '__main__':
    # 当你修改代码,并且保存之后,则自动更新代码
    app.run(debug=True)
1.2)创建请求,请求这个应用
复制代码
import requests

#  登录接口
url = "http://127.0.0.1:5000/api/login"
data = {"username": "hami", "password": "123456"}
res = requests.post(url, json=data)
print(res.text)
1.3)请求结果,以字符串形式返回

2)JSON模式的

2.1)搭建应用
复制代码
from flask import Flask, request, jsonify
from P12_Flask应用.MsgDome import *

# 实例化一个应用
app = Flask(__name__)

#  从数据库拿到的数据
all_user = {"username": "hami", "password": "123456"}


# 响应数据的模板:


# 写接口 - 不写任何的逻辑,只返回正确的响应数据。
# 设置对应的路由(路径)
@app.route("/")
def index():
    return "欢迎来到主页"


# 写一个登录接口, 开发指定的请求方法
@app.route("/api/login", methods=["POST"])
def login():
    # 数据的获取:以json格式进行获取数据
    res = request.get_json()
    print("用户请求的数据是:", res)

    # 用户填写的用户名和密码数据,key的话必须是username,password
    username = res["username"]
    password = res["password"]

   

 # 判断数据的正确性:结合你们业务常用场景去写几个
    """
    测试场景有哪些?
         1. 正确登录
         2. 参数为空
         3. 密码不正确
         4. 用户名不正确
         5. 参数填写错误
    """

#下面是以JSON的方式进行返回,下面的 MSG_是根据MsgDome来匹配的
    if username == "" or password == "":
        return jsonify(MSG_DATA_NULL)
    elif username == all_user["username"] and password == all_user["password"]:
        return jsonify(MSG_LOGIN_SUCCESS)
    elif username == all_user["username"] and password != all_user["password"]:
        return jsonify(MSG_ERROR_PASSWORD)
    elif username != all_user["username"]:
        return jsonify(MSG_ERROR_USERNAME)
    else:
        return MSG_DATA_ERROR


if __name__ == '__main__':
    # 当你修改代码,并且保存之后,则自动更新代码
    app.run(debug=True)
2.2)创建请求
复制代码
import requests
import jsonpath

#这个程序是一个对flask应用发起请求的数据程序

#  登录接口
url = "http://127.0.0.1:5000/api/login"
data = {"username": "ham", "password": "123456"}
res = requests.post(url, json=data
print(res.json())
2.3)请求结果,以JSON返回
复制代码
    elif username != all_user["username"]:
        
        return jsonify(MSG_ERROR_USERNAME) #jsonify只是为了确定让返回结果都json化
        
       #return MSG_ERROR_USERNAME 这样也可以的。

如果还是用text返回,也能打印

复制代码
开发把项目整好了, 部署到服务器

自己写的mock的服务也可以部署到服务器上。

服务器(linux) 和 win 基本操作一样。



部署环境环节:

1、安装python3的环境
2、jdk的环境
3、要安装对应的第三方模块

需要安装第三方包,比如sql

复制代码
pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple
相关推荐
鹏大师运维5 小时前
为什么信创电脑装软件总提示“软件包架构不匹配”?
linux·运维·架构·国产化·麒麟·deb·统信uos
007张三丰5 小时前
软件测试专栏(11/20):测试框架开发:pytest深度解析与插件体系
运维·服务器·自动化测试·pytest·测试框架
weixin_604236676 小时前
华三 路由器 极简核心配置
运维·服务器·网络·h3c·h3c路由器
鹤落晴春7 小时前
【Linux复习】管理SELinux安全性
linux·运维·服务器
AI智图坊7 小时前
多件装组合SKU图的批量生产效率分析:从PS手工到AI自动化的工作流改造
大数据·运维·人工智能·gpt·ai作画·自动化·aigc
云烟成雨TD8 小时前
Spring AI 1.x 系列【56】用大模型评判大模型:递归顾问实现自动化评估方案
人工智能·spring·自动化
qq_3665665010 小时前
视频配音自动化Pipeline:TTS选型+音色克隆+批量处理(附完整代码)
自动化·新媒体运营·音视频·音频
云计算磊哥@12 小时前
运维开发宝典026-MySQL02数据库表操作
运维·数据库·运维开发
天天进步201512 小时前
Tunnelto 源码解析 #9:控制服务器设计:Warp、WebSocket、Ping/Pong 与连接保活
运维·服务器·websocket
极客先躯13 小时前
高级java每日一道面试题-2026年02月01日-实战篇[Docker]-Docker Volume 的生命周期管理是怎样的?
java·运维·docker·容器·持久化·架构图·容器卷