-
2022-02-21 09:58:59
1、安装mockjs
npm install mockjs
2、安装 axios
npm install axios -g
3、项目main.js 添加
1、import axios from 'axios'; 2、Vue.prototype.$axios = axios; 3、import './mock/index' // mock 方式,正式发布时,注释掉该处即可(mock/index 是你写模拟接口数据的路径)
4、新建接口js 页面 ⬆️引入
1、import Mock from 'mockjs' 2、const data= {模拟数据} 3、Mock.mock('/order', /post|get/i, orderList);//调用模拟运单列表数据方法
5、页面调用
this.$axios.get('接口名').then((res) => {})
更多相关内容 -
mock模拟接口测试
2020-12-09 17:49:241.单元测试/接口测试中测试对象依赖其他对象,这些对象的构造复杂、耗时或者根本无法构造(未交付) 2.我们只测试对象内部逻辑的质量,不关心依赖对象的逻辑正确性和稳定性 3.当前端开发在开发页面的时候,需要服务端...一、为什么要使用mock
1.单元测试/接口测试中测试对象依赖其他对象,这些对象的构造复杂、耗时或者根本无法构造(未交付)
2.我们只测试对象内部逻辑的质量,不关心依赖对象的逻辑正确性和稳定性
3.当前端开发在开发页面的时候,需要服务端提供API接口
此时服务端没开发完成,或者说没搭建测试环境,这个时候前端开发会自己mock一个api服务端,自己给自己提供调用接口的返回数据
mock服务器用途就是开发在开发的过程中,需要依赖一部分的接口,但是对方没有提供或者环境等等情况。
4.依赖第三方数据的接口测试二、mock的环境搭建
1.git上的位置为:https://github.com/dreamhead/moco
windows安装,直接点击此处下载:
2.git上的readme(按照readme的内容进行安装操作也可完成)下:点击下载
3. 下载完成后,保存到电脑本地的一个目录,然后在同一目录下新建一个gy.json文件,里面写入如下内容格式:
4.接下来启动moco服务,打开moco-runner-1.1.0-standalone.jar所在的文件夹目录(E:\mock),地址栏左上角输入cmd,回车打开cmd窗口,输入如下命令java -jar moco-runner-1.1.0-standalone.jar http -p 12306 -c gy.json
5.打开浏览器,在浏览器输入http://localhost:12306
6.可以根据需要返回的接口信息值,去修改json文件的内容,来满足需要三、实战案例
配置不同的请求
- demo1:特定URI
[ { "description":"demo1=特定URI", "request":{ "uri":"/demo1" }, "response":{ "text":"Hello,demo1" } } ]
- demo2:特定请求参数
[ { "description":"demo2=特定请求参数", "request":{ "uri": "/demo2", "queries":{ "key1":"abc", "key2":"123" } }, "response":{ "text":"Hello,demo2" }
- demo3:特定请求方法
[ { "description":"demo3=特定请求方法", "request":{ "uri":"/demo3", "method":"DELETE" }, "response":{ "text":"Hello,demo3" } } ]
- demo4:约定请求头
[ { "description":"demo4=约定请求头", "request":{ "uri":"/demo4", "headers":{ "ContentType":"application/xml" } }, "response":{ "text":"Hello,demo4" } } ]
- demo5:约定请求体参数-form
[ { "description":"demo5=约定请求体参数-form", "request":{ "uri":"/demo5", "forms":{ "key1":"abc" } }, "response":{ "text":"Hello,demo5" } } ]
- demo6:约定请求体参数-json
[ { "description":"demo6=约定请求体参数-json", "request":{ "uri":"/demo6", "json":{ "key1":"value1", "key2":"value2" } }, "response":{ "text":"Hello,demo6" } } ]
- demo12:重定向
[ { "description":"demo12=重定向", "request":{ "uri":"/demo12" }, "redirectTo":"http://www.baidu.com" } ]
- demo13:返回json格式的数据
[ { "description":"demo13=返回json格式的数据", "request":{ "uri":"/demo13" }, "response":{ "json":{"key1":"value1","key2":"value2"} } } ]
实战操作
项目1
url.json[ { "description":"demo1=约定URI", "request":{ "uri":"/demo1" }, "response":{ "text":"Hello,demo1" } } ]
启动服务:
java -jar moco-runner-1.1.0-standalone.jar http -p 9098 -c url.json
python代码
import requests api_url = 'http://127.0.0.1:9098/demo1' reps = requests.get(api_url) print(reps.text) print(reps.status_code)
运行结果:
项目2
demo1.json[ { "description":"1、提交申请接口", "request":{ "uri":"/api/order/create/", "json":{ "user_id":"001", "goods_id":"123456", "num":1, "amount":100.8 } }, "response":{ "json":{"order_id": "0001"} } } ]
启动服务:
java -jar moco-runner-1.1.0-standalone.jar http -p 9098 -c demo1.json
python代码
import requests HOST = "http://127.0.0.1:9098" def test(): url = f"{HOST}/demo2" resp = requests.get(url, params={"key1": "abc", "key2": "123"}) resp = requests.post(url, params={"key1": "abc", "key2": "123"}) print(resp.text) if __name__ == '__main__': test()
运行结果:
项目3
demo2.json[ { "description":"1、提交申请接口", "request":{ "uri":"/api/order/create/", "json":{ "user_id":"001", "goods_id":"123456", "num":1, "amount":100.8 } }, "response":{ "json":{"order_id": "0001"} } }, { "description":"2、查询订单接口", "request":{ "uri":"/api/order/get_result/", "method":"GET", "queries":{ "order_id": "0001" } }, "response":{ "status":200, "json":{ "user_id": "001", "goods_id": "123456", "num":1, "amount":100.8 } } } ]
启动服务:
java -jar moco-runner-1.1.0-standalone.jar http -p 9098 -c demo2.json
python代码
"""{ "description":"2、查询订单接口", "request":{ "uri":"/api/order/get_result/", "method":"GET", "queries":{ "order_id": "0001" } }, "response":{ "status":200, "json":{ "user_id": "001", "goods_id": "123456", "num":1, "amount":100.8 } } } """ import time import requests import threading HOST = "http://127.0.0.1:9098" # 1、提交申诉请求 def create_order(): url = f"{HOST}/api/order/create/" payload = { "user_id": "001", "goods_id": "123456", "num": 1, "amount": 100.8 } resp = requests.post(url, json=payload) return resp.json()['order_id'] # print(resp.json()['order_id']) # if __name__ == '__main__': # create_order() # # 输出:0001 """ 查询接口: 1、频率 interval 2、多少时间超时 timeout 3、如果在超时时间内,查到结果就不需要继续查询! """ # 2、查询申诉请求的结果,使用请求接口的返回id去查询 def get_order_result(orderID, interval=3, timeout=20): """ :param orderID: 订单id :param interval: 频率 s :param timeout: 超时时间 s :return: """ url = f"{HOST}/api/order/get_result01/" payload = {"order_id": orderID} # 1、开始时间 startTime = time.time() # 获取当时时间 s单位 # 2、结束时间 endTime = startTime + timeout # 3、选择循环! # while 靠条件结束 # for 知道循环次数或遍历操作 cnt = 0 # 计数变量 while time.time() < endTime: resp = requests.get(url, params=payload) cnt += 1 if resp.text: # 有响应数据就结束循环! print(f"第{cnt}次查询,已经有查询结果>>> ", resp.text) break else: print(f"第{cnt}次查询,没有结果,请稍等...") # 4、设置频率 time.sleep(interval) # 间隔多久运行一次 print("查询完成") return resp.text if __name__ == '__main__': # 1、获取id id = create_order() print(id) # 2、查询结果 # res = get_order_result(id) # print(res) """ t1 = threading.Thread() 创建线程方法 target 希望把哪一个函数作为子线程 args 这个函数的实参 """ t1 = threading.Thread(target=get_order_result, args=(id,)) # 设置守护线程 主线程退出了,子线程get_order_result 也退出 t1.setDaemon(True) # 启动线程 t1.start() """ 扩展知识点:多线程技术 并发: 并行: 1- io密集型 阻塞 sleep() requests库 2- cpu密集型 计算型,这个多线程不一定省时间! 预期效果: 希望在异步查询等待3s的时间里可以去执行其他模块接口! """ for one in range(10): time.sleep(1) print(f'{one}-----我正在执行其他模块的自动化测试----')
-
Mock模拟测试使用
2018-10-12 09:13:11Mock模拟测试,定义、好处、关键点、Mockito使用、Mock 对象的行为验证、Spy 对象验证等 -
Python MOCK SERVER moco模拟接口测试过程解析
2020-09-17 13:51:04主要介绍了Python MOCK SERVER moco模拟过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 -
mock模拟接口测试_[转载]超简单本地mock假数据测试,模拟后台数据返回必杀技 - 白马酒凉...
2020-12-03 12:53:36mock就是在开发过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试开发的方法。使用mock有什么好处?1.团队可以更好地并发工作并发?没错,技术人员就应该用并发这个词。使用mock,各...什么是mock?
mock就是在开发过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试开发的方法。
使用mock有什么好处?
1.团队可以更好地并发工作
并发?没错,技术人员就应该用并发这个词。使用mock,各团队之间可以不需要再互相等待对方的进度,只需要约定好相互之间的数据规范(文档),即可使用mock构建一个可用的接口,可以更快的进行开发和调试以及自测,提升开发进度的同时,也将发现缺陷的时间点大大提前。
2.开启TDD(Test-Driven Development)模式,传说中的测试驱动开发
单元测试是TDD的常规操作,试想一下,当你测试过程中,某些协同模块没有完成,如何进行测试?这时mock就能很好的帮助你解决这个问题。当接口定义好后,测试人员就可以创建一个mock,把接口添加到自动化测试环境,提前创建测试。
3.测试覆盖率
比如一个接口在各种不同的状态下要返回不同的值,我们的传统的做法是复现这种状态然后再去请求接口,这是非常不科学的做法,而且这种复现方法很大可能性因为操作的时机或者操作方式不当导致失败,甚至污染之前数据库中的数据。如果我们使用mock,就完全不用担心这些问题。
4.方便演示
通过使用mock模拟数据接口,我们即可在只开发了UI的情况下,无须服务端的开发就可以进行产品的演示。
5.隔离系统
在使用某些接口的时候,为了避免系统中数据库被污染,我们可以将这些接口调整为mock的模式,以此保证数据库的干净。
如何使用mock?
mock有很多的在线平台,基本上都要注册,并且不稳定。所以longyoung我就萌发了一个想法,能不能本地搭一个mock,方便快捷。即使没网也可以工作,是不是很爽?在上网找了一圈,发现没有比较简单的方法,后来通过努力,终于实现了。方法很简单,因此不是特别智能,后期可以想办法升级下方法。废话少说,直接上步骤:
1.安装,请自行搜索安装。
2.随便到一个目录下创建一个文件存放json数据,如:。
命令切换到文件目录(如:D:\gittest\test),执行命令:http-server -p 5050。-p是指定端口的意思,访问的时候记得加端口号。
4.访问方法:http://192.168.3.252:5050/。ip+端口+文件名(包含后缀)。
PS:本文原创发于微信公众号longyoung,关注并回复「51电子书」免费领取程序员必读经典电子书。> 温馨提示:急性子可以直接拉到最后观看方法步骤。
什么是mock?
mock就是在开发过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试开发的方法。
使用mock有什么好处?
1.团队可以更好地并发工作
并发?没错,技术人员就应该用并发这个词。使用mock,各团队之间可以不需要再互相等待对方的进度,只需要约定好相互之间的数据规范(文档),即可使用mock构建一个可用的接口,可以更快的进行开发和调试以及自测,提升开发进度的同时,也将发现缺陷的时间点大大提前。
2.开启TDD(Test-Driven Development)模式,传说中的测试驱动开发
单元测试是TDD的常规操作,试想一下,当你测试过程中,某些协同模块没有完成,如何进行测试?这时mock就能很好的帮助你解决这个问题。当接口定义好后,测试人员就可以创建一个mock,把接口添加到自动化测试环境,提前创建测试。
3.测试覆盖率
比如一个接口在各种不同的状态下要返回不同的值,我们的传统的做法是复现这种状态然后再去请求接口,这是非常不科学的做法,而且这种复现方法很大可能性因为操作的时机或者操作方式不当导致失败,甚至污染之前数据库中的数据。如果我们使用mock,就完全不用担心这些问题。
4.方便演示
通过使用mock模拟数据接口,我们即可在只开发了UI的情况下,无须服务端的开发就可以进行产品的演示。
5.隔离系统
在使用某些接口的时候,为了避免系统中数据库被污染,我们可以将这些接口调整为mock的模式,以此保证数据库的干净。
如何使用mock?
mock有很多的在线平台,基本上都要注册,并且不稳定。所以longyoung我就萌发了一个想法,能不能本地搭一个mock,方便快捷。即使没网也可以工作,是不是很爽?在上网找了一圈,发现没有比较简单的方法,后来通过努力,终于实现了。方法很简单,因此不是特别智能,后期可以想办法升级下方法。废话少说,直接上步骤:
1.安装,请自行搜索安装。
2.随便到一个目录下创建一个文件存放json数据,如:。
命令切换到文件目录(如:D:\gittest\test),执行命令:http-server -p 5050。-p是指定端口的意思,访问的时候记得加端口号。
4.访问方法:http://192.168.3.252:5050/。ip+端口+文件名(包含后缀)。
PS:本文原创发于微信公众号longyoung,关注并回复「51电子书」免费领取程序员必读经典电子书。 -
vue使用Mock模拟接口
2020-12-22 20:35:09在main.js平级目录下创建mock.jsconst Mock=require('mockjs');//获取 mock.Random 对象const Random = Mock.Random;// mock一组数据const allTitle=["关于深化增值税改革有关政策的公告",'关于深化增值税改革有关...1.安装插件
npm install mockjs --save-dev
2.在main.js平级目录下创建mock.js
const Mock=require('mockjs');
//获取 mock.Random 对象
const Random = Mock.Random;
// mock一组数据
const allTitle=[
"关于深化增值税改革有关政策的公告",'关于深化增值税改革有关事项的公告','关于调整增值税纳税申报有关事项的公告','关于实施小微企业普惠性税收减免政策的通知','这是测试数据','555555','99999'
]
const allKey=[
"政策",'增值税','税纳','税收减免','这是测试数据','555555','测试'
]
const produceNewDate=function(){
let articles=[];
for(let i=0;i<7;i++){
let newArticleObje={
lawEffectId: 53,
lawNo: "财政部 税务总局 海关总署公告",
oldDocId: null,
provinceId: 732,
publishDate: "2019-03-20",
readid: 1912,
reviseDate: null,
taxId: "35",
title: allTitle[i],
topFlag: "1",
topOrder: 1,
userId: 2152,
viewCount: 141,
}
articles.push(newArticleObject);
}
return{
articles:articles
}
}
const keysData=function(){
let articles=[];
for(let i=0;i<7;i++){
articles.push(allKey[i]);
}
return{
articles:articles
}
}
// 需要几个接口就定义几个function,
//Mock.mock(url(接口地址),method(接口方式),上面定义的数据);
Mock.mock('/searchKey','post',keysData)
Mock.mock('/search','post',produceNewDate);
3.在main.js中引入
require('./mock.js');
4.在需要使用的组件中使用
axios.post('/search',params).then(
res=>{
if(res.status == 200){
if(res.data.articles.length){
this.listData=res.data.articles;
}
}
}
).catch(err=>this.$message.error(res.statusText));
-
VUE使用Mock模拟接口
2020-12-31 07:30:26之前用EASY-MOCK来模拟接口,但是这网站三天两头GG,太生气了~!发现可以自己在项目里使用Mock,开始使用~安装VUE在这里不写了,先从安装Mock开始:安装mockjsnpm install mockjs --save-dev新建mock目录,创建login... -
Java Mock模拟接口请求
2021-12-17 17:42:39测试过程中如果遇到依赖接口没有准备好,同样可以借助Mock;不会出现一个团队等待另一个团队的情况。这样的话,开发自测阶段就可以及早开展,从而发现缺陷的时机也提前了,有利于整个产品质量以 -
PostMan 之 Mock 接口测试
2021-08-23 16:28:48mock server 可用于模拟真实的接口。收到请求时,它会根据配置返回对应的请求。 在前后端分离的大背景下,mock server 在前端开发应用非广泛,也影响到测试人员。前端人员可以很快上手类似于 mock.js 这样的库,但是... -
Mock模拟接口新手教程
2021-07-18 12:51:50mock官方网站 1、首先在项目目录下载mock包,npm命令:npm install mockjs 2、引入mock文件var Mock...mock拦截的地址要跟请求的保持一致,返回模拟的数据根据自己后端的接口文档来定,需要其他数据的参考mock文档 ... -
Mock接口测试
2021-04-16 17:02:50项目需要用到第三方接口,如果第三方接口未开发好,或者第三方接口没有测试环境,为了保证进度,需要模拟接口用于调试。 3、如何mock? 可以利用抓包工具比如fiddler;可以利用web框架模拟;Django Flask(python w -
vue使用mock模拟接口
2022-01-17 19:23:57编写 /mocker/index.js,用于定义mock接口 const proxy = { 'GET /mock/get/test': { errMsg: null, code: 200, data: { id: 1, name: '零三', url: 'https://web03.cn' } }, 'POST /mock/post/ -
postman 前端模拟mock调试接口
2021-11-25 13:18:16然后点next -
接口测试-Mock测试方法
2019-05-26 22:29:02一、关于Mock测试 1、什么是Mock测试? Mock 测试就是在测试过程中,对于某些不容易构造(如 HttpServletRequest 必须在Servlet 容器中才能构造出来)或者不容易获取的比较复杂的对象(如 JDBC 中的ResultSet 对象... -
VUE2.X 使用 Mock 模拟接口
2022-03-16 15:33:512. 接口模拟 1. 安装插件 npm install mockjs --save-dev 2. 接口模拟 1. 在src目录下创建 mocker/mockData/index.js,内容为 mock 数据: // 静态数据 const resultList = [ { id: '8a58c6736f452c10016f... -
Spring junit test mock模拟http接口测试
2018-11-29 15:15:12很多时候对项目中的api接口大多是启动项目后用浏览器调用一下接口进行测试,或者用swagger,还有postman等工具,其实在单测里面也可以模拟浏览器进行接口测试。 先定义一个api接口, @RequestMapping(value = "... -
Mock 接口测试的常见几种实现方式
2022-02-21 18:42:48什么是接口Mock测试 Mock 测试定义 Mock 测试就是在测试过程中,对于某些不容易构造或者不容易获取的比较复杂的对象,用一个模拟的对象来创建以便测试的测试方法 Mock 测试应用场景 测试接口中需要依赖第三方... -
mock技术在接口测试中的应用
2022-02-09 10:07:31mock技术是啥?测试工作中怎么用? -
Vue如何mock数据模拟Ajax请求
2020-12-22 20:35:12我们在做一个项目时前期可能没有后端提供接口模拟数据,那么作为前端就需要自己写json文件模拟数据加载。网上往往参考的都是不全面的,比如get请求没问题但是post请求就报错了。在Vue中只需要vue-resource(也可以... -
使用mock进行接口模拟测试
2018-01-30 22:53:07以前我的解决方法是搭建一个本地的服务器,然后来手动修改数据,后来接口返回的数据量比较大,用起来很不方便,今天突然发现使用mock.js进行数据接口数据模拟非常好处,下面是使用mock模拟的一个简单的入门实例: ... -
Mock.js测试接口使用方法
2020-08-14 13:28:02mock.js是一款前端开发中拦截Ajax请求再生成随机数据响应的工具.可以用来模拟服务器响应. 优点是非常简单方便, 无侵入性, 基本覆盖常用的接口数据类型. 思考: 提个简单的开发需求: 请求后台某个接口,返回10-15... -
接口测试-Mock测试及Charles使用教程
2021-04-02 15:13:25接口测试-Mock测试及Charles使用教程Mock测试及Charles使用一、Mock的概念二、Mock测试是什么三、 为什么要进行Mock测试四、Mock对象适用场景五、使用Charles进行Mock测试1、主界面介绍2、Windows网页抓包1)设置...