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

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


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

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

测试数据的生成——faker、chance和json-schema-faker_第1张图片


下面介绍几个包。


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

使用方法如下:

测试数据的生成——faker、chance和json-schema-faker_第2张图片

官方文档给的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用起来也很方便,例子:

测试数据的生成——faker、chance和json-schema-faker_第3张图片

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


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

chance.bool({likelihood: 30});
 
  


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

chance.character({pool: 'abcde'});


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

chance.mixin({
    'user': function() {
        return {
            first: chance.first(),
            last: chance.last(),
            email: chance.email()
        };
    }
});

chance.user();

玩够了这些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)先来看看基本用法:

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

(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: "[email protected]"
//        first: "Annie"
//        last: “Myers"

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

http://more.handlino.com/

https://github.com/unfoldgroup/xxlorem



你可能感兴趣的:(大二暑假学习日志)