Mock Server基本使用方法

article/2025/9/18 3:41:46

Mock Server

  • 什么是mock server
  • mock server的作用
  • 初始Flask
    • 配置文件
    • 路由系统
  • 【基于flask框架实现Mock Server】
    • get基本方法使用

什么是mock server

实现mock功能的一个服务

mock server的作用

现今的业务系统很少有独立存在的,他们或多或少需要使用兄弟团队或者其他公司提供的服务这给我们的联调和测试造成了麻烦
对于这种情况,我们常见的解决方法是搭建一个临时的server,模拟那些服务,因为flask的第三方开源组件丰富

初始Flask

封装功能不及Django完善,性能不及Tomado,但是Flask可拓展性强,因为flask的第三方开源组件丰富
WSGI介绍:
Django使用wsgiref模块

配置文件

app=Flask(name,template_folder=‘templates’,static_url_path=‘/static/’,static_path=‘/zz’)

  • 模板路径:template_folder=‘templates’
  • 静态文件路径:static_url_path=‘/static/’
  • 静态文件引入别名:static_path=‘/zz’
  • 设置调试环境:app.debug=True(代码修改自动更新)
  • j设置json编码格式如果为False就不使用ascii编码:app.config[‘JSON_AS_ASCII’]=False
  • 设置响应头信息:Content-Type app.config[‘JSONIFY_MIMETYPE’]=“application/json;charset=utf-8”
    (注意;charset=utf-8)

路由系统

  1. 动态传参
from flask import Flaskapp = Flask(__name__)# 设置一个动态参数@app.route('/<name>')def second_flask(name):print(name)return 'Hello World'

【基于flask框架实现Mock Server】

在这里插入图片描述

  • 根据接口文档,设计Mock Server
  • mock server设计-登录
    1) 参数为空
    2)用户名密码正确
    3)用户名密码错误
    mockServer它不是一个真实的后端系统,你需要让他满足你的接口的模拟测试需求即可
    post方法的基本使用
# coding:utf-8from flask import Flask, request# 创建Flask对象app = Flask(__name__)# 视图函数@app.route('/login', methods=['GET', 'POST'])
def request_flask():"""post请求参数提示"""# 获取请求数据,返回数据类型为bytes: b'{"username": "zz", "password": "123456"}' <class 'bytes'>c = request.get_data()print(c, type(c))# 获取请求的数据类型,返回为json: {'username': 'zz', 'password': '123456'} <class 'dict'>d = request.get_json()print(d, type(d))# 获取请求的数据类型,返回为bytes: b'{"username": "zz", "password": "123456"}' <class 'bytes'>e = request.dataprint(e, type(e))# 获取json: {'username': 'zz', 'password': '123456'} <class 'dict'>f = request.jsonprint(f, type(f))f1 = request.json['username']print(f1)return 'Hello world'if __name__ == '__main__':app.run()

post测试代码

# coding:utf-8import requestsdata = {'username': 'zz','password': '123456'
}url = 'http://127.0.0.1:5000/login'
resp = requests.post(url=url, json=data)
print(resp)

post方法数据输出

b'{"username": "zz", "password": "123456"}' <class 'bytes'>
{'username': 'zz', 'password': '123456'} <class 'dict'>
b'{"username": "zz", "password": "123456"}' <class 'bytes'>
{'username': 'zz', 'password': '123456'} <class 'dict'>
zz

get基本方法使用

# coding:utf-8from flask import Flask, request# 创建Flask对象app = Flask(__name__)# 视图函数@app.route('/login', methods=['GET', 'POST'])
def request_flask():# get 请求# 获取指定的key值:zzh = request.args.get('username')print(h)# 获取所有参数的返回值,可以获取get请求的所有参数返回值是immutableMultiDict类型: ImmutableMultiDict([('username', 'zz'), ('password', '123456')])i = request.argsprint(i)# 将获得的参数转为字典: {'username': 'zz', 'password': '123456'}j = i.to_dict()print(j)# 请求头"""Host: 127.0.0.1:5000User-Agent: python-requests/2.27.1Accept-Encoding: gzip, deflateAccept: */*Connection: keep-alive"""head = request.headersprint(head)# 获取请求的url:http://127.0.0.1:5000/login?username=zz&password=123456url = request.urlprint(url)# 获取请求方法: GETmethod = request.methodprint(method)return 'Hello world'if __name__ == '__main__':app.run()

get方法数据输出

zz
ImmutableMultiDict([('username', 'zz'), ('password', '123456')])
{'username': 'zz', 'password': '123456'}
Host: 127.0.0.1:5000
User-Agent: python-requests/2.27.1
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alivehttp://127.0.0.1:5000/login?username=zz&password=123456
GET

mock server的基本服务搭建

# coding:utf-8from flask import Flask, request, jsonify# 创建一个实例app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False# 指定路由和请求方法
@app.route('/api/login', methods=['POST'])
def login():"""登录接口"""# 调试信息,打印请求方法print(request.method)# 获取请求数据,将数据变为字典data = request.get_json()print(data, type(data))# 定义用户名和密码变量,从data中取值username = data['username']pwd = data['password']"""测试场景设计:1) 参数为空2)用户名密码正确3) 用户名密码错误"""if username == '' and pwd == '':""""""return jsonify({"code": "001", "msg": "username or password can not null"})elif username == 'qb_10' and pwd == 'Baidu@123*':return jsonify({"address": {"city": "changsha"},"httpstatus": 200,"info": {"age": 19,"name": "zz"},"msg": "登录成功","token": "1234567890dfghjkl;"})else:return jsonify({"code": "001","msg": "username or password not fail"})@app.route('/api/addcart', methods=['POST']) # 路由到一个指定的接口,和这个接口的请求方法
def add_shop_tocart():"""添加商品到购物车"""data_base = request.get_data()print(data_base, type(data_base))data = request.get_json()productid = data['productid']if productid == '':return "please choose shop"elif productid == 8888:return jsonify({"data": [{"carid": 45233,"openid": "2345678sdfghjkl","price": 30,"productid": 9999,"userid": 1000}],"httpstatus": 200,"result": "添加商品到购物车成功"})elif "productid" != 8888:return "请选择正确的商品"# else:#     return jsonify(#         {#             "data": [#                 {#                     "carid": 45233,#                     "openid": "2345678sdfghjkl",#                     "price": 30,#                     "productid": 9999,#                     "userid": 1000#                 }#             ],#             "httpstatus": 200,#             "result": "添加商品到购物车成功"#         }#     )if __name__ == '__main__':app.run(host='127.0.0.1',port=5000,debug=True)

测试代码

# coding:utf-8
import jsonimport pytest
import requestsclass TestDemo:"""Test Demo"""def test_login(self):data = {'username': 'qb_10','password': 'Baidu@123*'}url = 'http://127.0.0.1:5000/api/login'resp = requests.post(url=url, json=data)print(resp)print(resp.text)def test_add_cart(self):data = {"openid": "2345678sdfghjkl","productid": '',"userid": 1000}url = 'http://127.0.0.1:5000/api/addcart'resp = requests.post(url=url, json=data)print(resp)print(resp.text)if __name__ == '__main__':pytest.main()

http://chatgpt.dhexx.cn/article/P367ASPg.shtml

相关文章

gRPC Mock Server

PowerMock是一个Mock Server的实现&#xff0c;它同时支持HTTP与gRPC协议接口的Mock&#xff0c;并提供了灵活的插件功能。 这个工具面向于前后端、测试等对有接口Mock需求的开发人员&#xff0c;也可以作为一个通用的Mock服务&#xff0c;部署在网关架构或API管理平台中&#…

mock server java_1分钟搭建极简mock server

1、无聊的背景、起源&#xff1a; 如今的业务系统越来越复杂庞大&#xff0c;各个功能直接的调用也是多如牛毛&#xff0c;但如果在联调的时候&#xff0c;恰好被调的接口正在开发&#xff0c;怎么办&#xff1f;傻傻的等么&#xff0c;不存在的&#xff01;这时会搭建一些serv…

Mock Server入门及实践

分享一个大牛的人工智能教程。零基础&#xff01;通俗易懂&#xff01;风趣幽默&#xff01;希望你也加入到人工智能的队伍中来&#xff01;请轻击人工智能教程 什么是Mock Server&#xff1f; Mock测试&#xff1a;就是在测试过程中&#xff0c;对于某些不容易构造或者不容易…

用 java 安装 mockserver,Mock Server实践

背景 在美团服务端测试中&#xff0c;被测服务通常依赖于一系列的外部模块&#xff0c;被测服务与外部模块间通过REST API或是Thrift调用来进行通信。要对被测服务进行系统测试&#xff0c;一般做法是&#xff0c;部署好所有外部依赖模块&#xff0c;由被测服务直接调用。然而有…

Mock-- Server的使用

近日项目需求 使用mock-server来提供虚拟数据(API)&#xff0c;方便在服务被调用方没有开发好的情况下&#xff0c;服务调用方能不被耽误的继续进行开发 。 我们的情况大概是这样&#xff1a; 我们的服务去调用 另一方提供的服务&#xff0c;另一方的服务可能还没有开发好&…

前端调试,模拟数据利器之Mock Server使用教程来啦~

文章目录 1 MockServer是什么2 为什么要使用MockServer3 MockServer的作用4 搭建MockServer服务4.1 部署MockServer服务详细步骤4.1.1 第一种方式&#xff08;推荐&#xff09;4.1.2 第二种方式 4.2 启动Shell脚本4.3 访问MockServer UI界面 5 MockServer服务的基础使用5.1 项目…

浅谈 Mock Server

What&#xff1f;什么是 Mock Server Mock 是模拟的意思。在测试中&#xff0c;通常表述为&#xff1a;对测试过程中不容易构造或者不容易获取的物件&#xff0c;用一个虚拟的物件来进行模拟的一个过程。能够提供 Mock 功能的服务就叫作 Mock Server。 Mock Server 通过模拟真…

Mock Server 入门

Mock Server介绍 什么是mock ? 我在去年的时候介绍一篇幅 python mock的基本使用&#xff0c;http://www.cnblogs.com/fnng/p/5648247.html 主要是针对单元测试的应用&#xff0c;它可以很方便的解除单元测试中各种依赖&#xff0c;大大的降低了编写单元测试的难度。 什么是Mo…

Matlab解决脚本中中文乱码问题

首先下载字体yahei consolas hybrid。百度网盘地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1Zv2FMt3uow7DZix2rtAbrA 提取码&#xff1a;am4d 然后将下载的字体保存在C:\Windows\Fonts中&#xff0c;启动Matlab2018a这里使用的是2018a版本&#xff0c;其他版…

WEB UI自动化测试之AutoMagic自动化测试

AutoMagic自动化测试平台 AutoMagic 是一个基于WebUI的自动化管理平台。为什么叫AutoMagic呢&#xff1f;因为自动化&#xff08;Automation&#xff09;在执行起来的时候是一个很神奇的事情&#xff0c;它可以无人值守的模拟人的操作&#xff0c;就像魔术&#xff08;Magic&a…

Jupyter Notebook从入门到精通

下载 本课程练习完整代码 Jupyter Notebook&#xff1a; https://gist.github.com/zgpeace/8d3eb8c803a54d1ca797fa26cb68bd4c 财富500强 csv下载 https://github.com/zgpeace/fortune500.git 1. 什么是 Jupyter 笔记本&#xff1f; Jupyter Notebook 是一个非常强大的工具&…

dev shm mysql_新特性:/dev/shm对Oracle 11g的影响

ORACLE 从11g版本开始&#xff0c;引入了一个自动内存管理(Automatic Memory Management)特性&#xff0c;该特性需要更多的共享内存(/dev/shm)&#xff0c;因此如 /dev/shm对Oracle 11g的影响: ORACLE 从11g版本开始&#xff0c;引入了一个自动内存管理(Automatic Memory Mana…

Git分布式版本控制工具

Git分布式版本控制工具 文章目录 Git分布式版本控制工具1、目标 2、概述2.1、开发中的实际场景2.2、版本控制器的方式2.3、Git工作流程图 3、Git安装与常用命令3.1、Git 环境配置3.1.1 下载与安装3.1.2 基本配置3.1.3 为常用指令配置别名3.1.4 解决 GitBash 乱码问题 3.2、获取…

关于我在windows使用volatility取证这档事

官网下载地址&#xff1a;https://www.volatilityfoundation.org/releases volatility3的官方文档&#xff1a;https://volatility3.readthedocs.io/en/latest/basics.html 下载 看清有两个版本&#xff0c;用法不一样 第一次我下载了Volatility 2.6 Windows Standalone Exe…

DLNLP学习笔记03(Speech Recognition: LAS模型)

Listen, Attend, and Spell (LAS) [Chorowski. et al., NIPS’15] 论文地址&#xff1a;https://arxiv.org/pdf/1508.01211.pdf 1 模型简介&#xff1a; 2 Listen&#xff1a;其中Encoder可以为RNN&#xff0c;CNN或者RNNCNN。 Listen-down sampling&#xff1a;&#xff08;RN…

On Device Debug!IDA+GDB trace automagic.apk in s1

2019独角兽企业重金招聘Python工程师标准>>> http://forum.xda-developers.com/showthread.php?t2050393 Well... I have attached a debugger to native code, set breakpoints, analyzed registers, memory, etc. It wasnt that easy though. It took me severa…

【Jetson Nano 入门】环境配置汇总

文章目录 前言一、镜像烧写二、PWM风扇自动调速三、使用MicroUSB在电脑打开终端四、VNC实现局域网及网线直连通信五、SSH文件传输六、状态监控软件Jtop七、检查CUDA、OpenCV及cuDNN八、USB摄像头测试软件Camorama九、CSI摄像头测试十、实现Yolov4-tiny的USB摄像头实时检测 前言…

WEB UI自动化测试之AutoMagic自动化测试平台开源

作者介绍&#xff1a; 网名: Ray 介绍&#xff1a;笑起来像个孩子&#xff0c;冷起来是个迷。 博客&#xff1a;http://www.cnblogs.com/tsbc/ 2018年3月29日&#xff0c;Ray说准备把AutoMagic自动化测试管理平台开源了&#xff01;&#xff01;&#xff01; 这是个好消息&…

三星s20 android auto,Automagic一个更简单的方式来自动化您的Android手机 | MOS86

你有没有想过你的智能手机会在你回家的时候开始播放音乐&#xff1f;当你关闭社交网络的时候怎么样&#xff1f;Automagic是一种替代方案&#xff0c;通过使用易于理解的流程图执行许多相同的任务&#xff0c;向用户提供了一种更简单的自动化Android手机的方法。 Automagic如何…

AutoMagic自动化测试平台简介

PS:给想做自动化平台同学一点思路。 AutoMagic 是一个基于WebUI的自动化管理平台。为什么叫AutoMagic呢&#xff1f;因为自动化&#xff08;Automation&#xff09;在执行起来的时候是一个很神奇的事情&#xff0c;它可以无人值守的模拟人的操作&#xff0c;就像魔术&#xff0…