测试数据的生成——faker、chance和json-schema-faker

来源:互联网 发布:boss数据同步接口缴费 编辑:程序博客网 时间:2024/04/29 06:21

今天看了几个关于测试数据生成的npm包,调用api可在浏览器和 node.js 中生成大量的伪数据。


推荐一个好用的测试api的平台:https://tonicdev.com/npm/。下午无聊的时候把大部分的api都玩了一遍。O(∩_∩)O哈哈~

如下图,选择相应的npm包进行测试,输入代码,即可run出输出:


下面介绍几个包。


1、faker.js(https://www.npmjs.com/package/faker)

使用方法如下:

官方文档给的api很多,需要用到时再看文档就好啦,在这里记录几个常用的。

faker.js也支持中文的,需要先设置:faker.locale = “zh_CN”。毕竟是个外国人用的,部分数据不支持中文,生成的某些中文数据也有一丢丢奇怪。

常用api(faker.xxx类.xxx方法()):

address类:city(城市)、streetName(街道)、state(省份)

commerce类:color(颜色)、price(价格)

date类:past、future、between、recent、month、weekday

internet类:email、userName、password

name类:firstName、lastName、findName

phone类:phoneNumber

random类:number


2、chance.js(http://chancejs.com/)

chance.js用起来也很方便,例子:

chance.js 的api用起来也挺有趣的,列举几个简单例子:


30%的几率返回true,70%几率返回false。

<span style="font-size:14px;color:#333333;"></span><pre name="code" class="javascript">chance.bool({likelihood: 30});


从abcde五个字母中选一个返回。

<span style="font-size:14px;color:#333333;">chance.character({pool: 'abcde'});</span>


返回一个自定义类型混合的object。

<span style="font-size:14px;color:#333333;">chance.mixin({    'user': function() {        return {            first: chance.first(),            last: chance.last(),            email: chance.email()        };    }});chance.user();</span>

玩够了这些api,具体要用的我们还是按需查文档可靠点。


3、json-schema-faker(https://github.com/json-schema-faker/json-schema-faker

这个更加强大的json-schema-faker内置了faker.js和chance.js,对二者是支持且可扩展的,而且还具有。

(mark资源:src=“https://cdnjs.cloudflare.com/ajax/libs/json-schema-faker/0.3.1/json-schema-faker.min.js”)


(1)先来看看基本用法:

<span style="font-size:14px;color:#333333;">var jsf = require('json-schema-faker');var schema = {  type: 'object',  properties: {    user: {      type: 'object',      properties: {        id: {          $ref: '#/definitions/positiveInt'        },        name: {          type: 'string',          faker: 'name.findName'        },        email: {          type: 'string',          format: 'email',          faker: 'internet.email'        }      },      required: ['id', 'name', 'email']    }  },  required: ['user'],  definitions: {    positiveInt: {      type: 'integer',      minimum: 0,      exclusiveMinimum: true    }  }};var sample = jsf(schema);console.log(sample.user.name);// output eg: John Doe</span>

(2)扩展fake.js并使用:

var jsf = require('json-schema-faker');jsf.extend('faker', function(faker){  faker.locale = "de";  faker.custom = {    statement: function(length) {      return faker.name.firstName() + " is cool.";    }  };  return faker;});var schema = {  "type": "string",  "faker": {    "custom.statement": [19]  }}var sample = jsf(schema);// output eg: Victoria is cool.

(3)扩展chance.js并使用:

var jsf = require('json-schema-faker');jsf.extend('chance', function(chance){  chance.mixin({    'user': function() {      return {        first: chance.first(),        last: chance.last(),        email: chance.email()      };    }  });  return chance;});var schema = {  "type": "string",  "chance": "user"}var sample = jsf(schema);//  eg: Object://        email: "nesrom@vu.an"//        first: "Annie"//        last: “Myers"

4、除此之外,还有一些偏门的可以产生乱数假文(中文词、段落、姓、名等)以供排版使用的工具:

http://xxlorem.unfoldgroup.com/

http://more.handlino.com/

https://github.com/unfoldgroup/xxlorem



0 0
原创粉丝点击