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()

Mock Server基本使用方法相关推荐

  1. 纪念特洛伊英雄 Sinon - SAP UI5 Mock Server 使用步骤和工作原理介绍

    这是 Jerry 2021 年的第 63 篇文章,也是汪子熙公众号总共第 340 篇原创文章. 蜀相杜甫丞相祠堂何处寻,锦官城外柏森森.映阶碧草自春色,隔叶黄鹂空好音.三顾频烦天下计,两朝开济老臣心. ...

  2. 1分钟搭建极简mock server

    摘自博客园:https://www.cnblogs.com/mikasama/p/9838480.html 1.无聊的背景.起源: 如今的业务系统越来越复杂庞大,各个功能直接的调用也是多如牛毛,但如果 ...

  3. 如何优雅的使用Mock Server

    事出有因 昨天跟同事讨论我们在用的rap2(一个集接口编写和mock server的开源项目)和刚上线了一个easy-mock的server,到底哪个好用. 我们主要讨论的点有个两个: 接口的一致性. ...

  4. python接口测试实战_Python接口测试实战5(下) - RESTful、Web Service及Mock Server

    课程目录 更多学习资料请加添加作者微信:superz-han获取 本节内容 REST及RESTful API Web Service XML解析 Mock Server REST及RESTful AP ...

  5. java mockserver搭建_搭建Mock Server

    1.为什么要搭建mock-server? 为了更好的分工合作,让前端能在不依赖后端环境的情况下进行开发,其中一种手段就是为前端开发者提供一个 web 容器,这个本地环境就是 mock-server. ...

  6. SAP UI5 应用开发教程之六十三 - 基于 OData V4 的本地 Mock Server 实现的深入介绍试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  7. SAP UI5 应用开发教程之六十三 - 基于 OData V4 的本地 Mock Server 实现的深入介绍

    学习本步骤之前,请确保你已经复习了步骤 26 和 步骤 62 的知识: SAP UI5 应用开发教程之二十六 - OData 服务配合 Mock 服务器的使用步骤详解 SAP UI5 应用开发教程之六 ...

  8. 如何以 mock server 的方式本地启动 SAP UI5 应用,使它不连接服务器端 OData 服务

    我们在做 SAP UI5 开发时,在视图逻辑没有开发完毕时,往往不希望连接服务器端的 OData 服务进行联调,而仅仅连接本地端的测试数据. 本文介绍如果启动本地 mock server,将 SAP ...

  9. 搭建Mock Server

    搭建Mock Server 1.为什么要搭建mock-server? 为了更好的分工合作,让前端能在不依赖后端环境的情况下进行开发,其中一种手段就是为前端开发者提供一个 web 容器,这个本地环境就是 ...

  10. Mock Server实践

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

最新文章

  1. koa中使用cookie 和session
  2. Kali Linux又增加一个顶级域名kali.download
  3. 九、序列参数集Sequence Paramater Set(SPS)解析
  4. 【摘录】UNITY优化-有关骨骼数量的上限问题
  5. MySQL统计函数GROUP_CONCAT使用及报错分析
  6. Bootstrap table列内容过长,显示固定长度,超过内容隐藏
  7. Split的使用(C#)
  8. fzyzojP1635 -- 平均值
  9. 21矩阵——Schur分解定理、酉相似下的标准型、Hermite正定矩阵、正规矩阵
  10. 107 nginx rewrite规则和alias
  11. 抓包工具之MitmProxy
  12. 如何卸载服务(Service)?
  13. 【学习笔记】山东大学生物信息学-08 编程基础与网页制作
  14. XP需要计算机管理权限,xp无法无法使用管理员权限运行软件的解决步骤
  15. 【应用笔记】APM32F4xx_ADC应用笔记
  16. 在电脑上收听广播——龙卷风网络收音机试用
  17. 背包问题贪心算法求解
  18. mysql数据倾斜_Hive SQL 数据倾斜总结
  19. 宝塔面板创建数据库时报错数据库管理密码错误处理方案
  20. 空间面板回归模型(stata操作)

热门文章

  1. 学习OpenCV3:判断两条直线相交,并计算交点和夹角
  2. 乖离率背离公式_通达信指标公式源码操盘K线主图指标
  3. 手机号码编码规则是什么?
  4. ApiPost测试接口直接生成API文档
  5. 【辅助开发】游戏辅助开发全流程-golang
  6. 【.NET程序员面试题----初级】第一卷
  7. 测试端口的命令 linux,linux的ping命令端口号
  8. 【转载】SAP用户出口清单(User Exits)
  9. 安装前端插件 FeHelper
  10. Chrome浏览器添加fehelper插件