Mock.js测试代码及Ajax拦截案例讲解

简介: 在做程序开发的时候,我们经常会用到一些测试数据,相信大多数同学是这么来造测试数据的:

前言


在做程序开发的时候,我们经常会用到一些测试数据,相信大多数同学是这么来造测试数据的:


test1
test01
test02
测试1
测试2
测试数据1
这是一段测试文本
这是一段很长很长很长的测试文本...


中枪的请举手。


不仅要自己手动敲这些测试数据,还敲的这么假。那有啥办法呢?难不成有什么东西能自动给我造点以假乱真的数据啊?你别说,还真有!


在 JavaScript 中有个神库,叫做 Mock,(Python中的叫做Faker,还是Python造假库的名字起的接地气呀O(∩_∩)O)可以自动帮我们来生成各种各样的看起来很真的数据,让我们来看看吧!


为什么要伪造数据


要点提示:


  • Python - Faker
  • JavaScript - Mock.js


场景举例:


  • 一般数据伪造:贴吧评论、影评、表单验证等
  • 特定场合数据伪造:数学场景(微积分验证等)、机场信息(前后端一个人编写,直接调用接口)、游戏(王者荣耀、吃鸡等)



Mock.js详解


要点提示:


  • 安装


  • 通过require引入的方式
  • 通过script标签引入本地下载好的mockjs文件或者使用cdn


  • 语法


  • Mock.Random()<Image、Web、扩展方法讲解 >(如何生成图片的网络地址、顶级域名)


官网地址:http://mockjs.com/



测试代码



var Mock = require('mockjs');
var obj = {a:'AAA',b:"BBB",c:"CCC",d:"DDD",e:"EEE"};
var arr = ["a","b","c","d","e","f"];
var data = Mock.mock({
    /*"str|1-3":"abc",//随机重复多少次
    "str|2":"abc",//固定重复多少次
    "arr|1-3":[
        {
            "id|+1":5
        }
    ],
    //声明生成的数据类型
    "num|2-4":2,
    //生成小数
    "num|2-4.1-3":2,
    //布尔值
    "bool|1":true, //随机生成true or false
    "bool2|1-5":false,
    //对象
    "obj|2":obj,
    "obj2|1-3":obj,
    //数组
    "arr|1":arr,
    "arr21|+2":arr,
    "arr22|+2":arr,
    "arr23|+1":arr,
    "arr3|1-3":arr,
    "arr4|2":arr,
    "arr5|1-3":[
        {
            "id|+10":1,
            "name|1-3":"abc"
        }
    ],
    */
    /*
     "fun":function () {
            //函数  给啥返回啥
            return Mock.mock({
                "a|1-3":"AAA"
            });
        },
        //占位符
        name: {
            first: '@FIRST',
            middle: '@FIRST',
            last: '@LAST',
            full: '@first @middle @last'
        }
        */
});
console.log(JSON.stringify(data, null, 4));



MDN关于JSON.stringify的解释:


https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify



var Mock = require('mockjs');
var arr = ["a","b","c","d","e"]
var Random = Mock.Random;
//自定义扩展方法
Random.extend({
    constellation: function(date) {
        var constellations = ['白羊座', '金牛座', '双子座', '巨蟹座', '狮子座', '处女座', '天秤座', '天蝎座', '射手座', '摩羯座', '水瓶座', '双鱼座']
        returnthis.pick(constellations)
    },
    sum:function (num1,num2) {
        return num1+num2
    }
})
/*
var Random = Mock.Random;
console.log(Random.email())
console.log(Mock.mock("邮箱:@email"));
*/
var data = Mock.mock({
    /*
    "bool":"@BOOLEAN",
    "bool|2":"@BOOLEAN(1,3,false)",
    "bool3|1-3":false,
    "natural":"@NATURAL",
    "natural1":"@NATURAL(-100,100)",
    "interger":"@INTERGER",
    "interger1":"@INTERGER(0,100)",
    "num":"@INTERGER(1,10)",
    "float":"@FLOAT",
    "float2":"@FLOAT(0,100,1,3)",
    "float3|0-100.1-3":1,
    "price":"@FLOAT(1,100,1,2)",
    //计算总价格
    "total":function(){
        return this.price*this.num
    },
    //特殊字符
    "char1":"@CHARACTER",
    "char2":"@CHARACTER('shipudong')",//随机生成一个
    "char3":"@CHARACTER('upper')",
    //字符串
    "str":"@STRING",
    "str1":"@STRING('number',5)", //生成5个数字
    "str2":"@STRING('number',1,4)", //生成1-4个数字
    //随机生成一个数组   range
    "range":"@RANGE(1,10,2)"
    // 随机生成一个日期
    "date":"@DATE('yyyy-MM-dd')",
    "time":"@TIME()",
    "time1":"@TIME(H:m:s)",
    "datetime":"DATETIME(yyyy-MM-dd H:m:s)"
    //返回当前时间
    "now":"NOW",
    "now1":"NOW(yyyy-MM-dd H:m:s)"
    "now2":"NOW('day','yyyy-MM-dd H:m:s')",
    //图片
    //对中文不友好
    "img":"@IMG('300*100','#F00','#00F','jpg','shipudong is so handsome')"
    //浏览器查看图片格式
    //base64
    "dataimg":"DATAIMAGE('300*100'.'石璞东好帅')"
    //颜色
    "color":"@COLOR",
    "hex":"@HEX",
    "rgb":"@RGB",
    "rgba":"@RGBA",
    "hsl":"@HSL"
    //文本
    "paragraph":"@PARAGRAPH",
    "paragraph2":"@PARAGRAPH(2)",
    "paragraph3":"@PARAGRAPH(1,3)",
    "cparagraph":"@CPARAGRAPH",
    "cparagraph2":"@CPARAGRAPH(2)",
    "cparagraph3":"@CPARAGRAPH(1,3)",
    "sentence":"@SENTENCE",
    "sentence2":"@SENTENCE(2)",
    "sentence3":"@SENTENCE(1,6)",
    "csentence":"@CSENTENCE",
    "csentence2":"@CSENTENCE(3)",
    "csentence3":"@CSENTENCE(1,6)",
    "word":"@WORD",
    "word2":"@WORD(3)",
    "word3":"@WORD(2,6)",
    "cword":"@CWORD",
    "cword2":"@CWORD(3)",
    "cword3":"@CWORD(2,6)",
    "title1":"@TITLE",
    "title2":"@TITLE(3)",
    "title3":"@TITLE(1,6)",
    "ctitle":"@CTITLE",
    "ctitle2":"@CTITLE(3)",
    "ctitle3":"@CTITLE(1,6)",
    "first":"@FIRST",
    "last":"@LAST",
    "name":"@NAME",
    "name1":"@NAME(true)",
    "cfirst":"@CFIRST",
    "clast":"@CLAST",
    "cname":"@CNAME",
    "cname1":"@CNAME(true)",
    "url1":"@URL",
    "url2":"@URL('http')",
    "url":"@URL('http','www.shipudong.com')",
    "protocol":"@PROTOCOL",
    'domain':"@DOMAIN('com')",
    "tld":"TLD",
    "email":"@EMAIL",
    "email2":"@EMAIL('163.com')",
    "email3":/\d{6,9}@qq\.com/,
    "ip":"@IP",
    "region":"@REGION",
    "province":"@PROVINCE",
    "city":"@CITY",
    "city2":"@CITY(true)",
    "country":"COUNTRY",
    "country2":"COUNTRY(true)"
    "zip":"@ZIP",
    "capitalize":"@CAPITALIZE('hELlo world!')",
    "upper":"@UPPER('hELlo world!')",
    "lower":"@LOWER('hELlo world!')",
    "pick":"@PICK(arr)",
    "shuffle":"@SHUFFLE(arr)",
    "guid":"@GUID",
    "id":"@ID",
    "inc":"@INCREMENT(2)",
    "inc2":"@INCREMENT",
    "inc3":"@INCREMENT",
*/
    "constellation":"@CONSTELLATION",
    sum:"@SUM(6,4)"
})
console.log(JSON.stringify(data, null, 4));



Ajax数据拦截



<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<button id ="btn">点我啊</button>
<script src="https://cdn.staticfile.org/jquery/2.0.0/jquery.min.js"></script>
<script src="mock-min.js"></script>
<script>
    // ajax数据拦截
    Mock.mock('a.json',{
       "str|1-3":"shipudong",
        "id|+1":1,
        "title":"@CTITLE",
        "name":"@CNAME"
    });
    $(function () {
        $('#btn').click(function () {
            $.get('a.json',function (res) {
                console.log(res);
            })
        })
    })
</script>
</body>
</html>
相关文章
|
2月前
|
数据采集 机器学习/深度学习 大数据
行为检测代码(一):超详细介绍C3D架构训练+测试步骤
这篇文章详细介绍了C3D架构在行为检测领域的应用,包括训练和测试步骤,使用UCF101数据集进行演示。
70 1
行为检测代码(一):超详细介绍C3D架构训练+测试步骤
|
2月前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
3月前
|
Web App开发 JavaScript 前端开发
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
|
17天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
43 1
|
26天前
|
人工智能 供应链 安全
AI辅助安全测试案例某电商-供应链平台平台安全漏洞
【11月更文挑战第13天】该案例介绍了一家电商供应链平台如何利用AI技术进行全面的安全测试,包括网络、应用和数据安全层面,发现了多个潜在漏洞,并采取了有效的修复措施,提升了平台的整体安全性。
|
1月前
|
数据采集 前端开发 JavaScript
虎扑APP数据采集:JavaScript与AJAX的结合使用
虎扑APP数据采集:JavaScript与AJAX的结合使用
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
2月前
|
分布式计算 大数据 Spark
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
43 1
|
2月前
|
人工智能 监控 JavaScript
模拟依赖关系和 AI 是Vue.js测试的下一个前沿领域
模拟依赖关系和 AI 是Vue.js测试的下一个前沿领域
32 1
|
3月前
|
SQL JavaScript 前端开发
基于Python访问Hive的pytest测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Python、来开发Hive应用的方法,产生的代码如下
77 6
基于Python访问Hive的pytest测试代码实现