基于 Java 开发的数据产生神器 DataGenerator

MIT
Java 查看源码»
跨平台
2016-07-04
开源中国股瞎

DataGenerator 是基于java开发,强大并且灵活的数据产生神器器,能够根据jobs.xml配置产生各种各样的数据,不用再为测试时没有数据而烦恼了  。

编译和运行

mvn package
cp jobs.xml ./target/jobs.xml
cd target
mkdir pool
mkdir output
java -jar DataGenerator-0.0.1-SNAPSHOT.jar

查看结果

cat output/test.sql
insert into test (hex,author,name,sn) values('123456_da99aa0efb','gdx','王五','123456')
insert into test (hex,author,name,sn) values('123456_4801bc3556','gdx','王五','123456')
insert into test (hex,author,name,sn) values('123456_fdf9e2100e','gdx','王八','123456')

基本使用

cat jobs.xml
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <jobs>
        <job>
            <id>1</id>
            <num>3</num>
            <table>test</table>
            <filename>test.sql</filename>
            <detail>
                <author>$var{author}</author>
                <sn>123456</sn>
                <hex>$var{sn}_$rule{hex,10}</hex>
                <name>$pool{name}</name>
            </detail>
        </job>
    </jobs>
</root>

$var{variable} 用法

在上面的 jobs.xml$var{author} 代表引用 author 这个变量,在jar中config.properties中进行了配置

cat config.properties
#内置变量
var.author=gdx
#内置类型
rule.bin=01
rule.oct=01234567
rule.dec=0123456789
rule.hex=0123456789abcdef
rule.letter=abcdefghijklmnopqrstuvwxyz
rule.string=0123456789abcdefghijklmnopqrstuvwxyz
##内置池
pool.name=张三,李四,王五,王八
pool.sex=男,女

可以看到 var.author 被设置为 gdx ,但是 $var{sn} 并没有在config.properties中被定义,这时 $var{sn} 指的是jobs.xml中的 <sn>123456</sn> 标签,即为 123456

$rule{type,len} 用法

$rule{type,len} 中间是没有任何空格的,在jobs.xml中 $rule{hex,10} 代表从 hex 类型的数据中随机取出10个,而 hexconfig.properties 中进行了定义

rule.hex=0123456789abcdef

同样可以使用 $rule{bin,2} 表示随机产生一个十位数

$pool{name} 用法

$pool{name} 用法和 $var{variable} 类似,但是 $pool{name} 还有一种更加高级的用法,比如每次要从上百个证件号码中随机取一个,如果在 config.properties 中定义,会显得非常臃肿,这时可以在 pool 目录中添加一个 ids.csv 文件

ids.csv

  001
  002
  003
  004
  005

jobs.xml 修改如何如何

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <jobs>
        <job>
            <id>1</id>
            <num>3</num>
            <table>test</table>
            <filename></filename>
            <detail>
                <id>$pool{ids.csv}</id>
                <author>$var{author}</author>
                <sn>123456</sn>
                <hex>$var{sn}_$rule{hex,10}</hex>
                <name>$pool{name}</name>
                <sex>$pool{sex}</sex>
            </detail>
        </job>                    
    </jobs>
</root>

再次运行

java -jar DataGenerator-0.0.1-SNAPSHOT.jar
insert into test (author,sex,name,hex,id,sn) values('gdx','女','张三','123456_bc5f720d09','002','123456')
insert into test (author,sex,name,hex,id,sn) values('gdx','女','李四','123456_461fd2fbdd','005','123456')
insert into test (author,sex,name,hex,id,sn) values('gdx','男','王八','123456_f800f13a6f','001','123456')
的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

8个不错的随机生成数据库测试数据的利器

样品/测试数据,是一种测试网络工程与应用的有效方式。除了毫无意义的数据,真实姓名,地址,邮递区号,可以使整个测试阶段比较容易。 webresourcesdepot搜集了8个很不错的免费测试数据生成器...

2013/05/10 20:59
6.8K
1
根据正则解析出实例数据

local f = require('DataGenerator') function test_data (data) local i = 0 for _, patt in ipairs(data) do --print(patt) for _, k in ipairs(f(patt)) do --print(k) if string.match(k...

2013/05/21 22:32
88
0
程序员实用工具推荐

程序员实用工具推荐 Red Gate 家族 大名鼎鼎的RedGate,相信大家都不会陌生,Reflector就是它家做的。这里就不介绍了.我本地安装的是09年下的一个套装,我介绍下常用的工具: SQL DOC:   如...

2012/12/14 00:00
1K
0
HTTP2 学习

一、HTTP1.x存在的问题 Http1.0时Connection无法复用,同一时间一个Connection只能处理一个request。Http1.1引入了Request pipelining来解决这一问题,Request pipelining。   Requestpipe...

2016/07/05 16:27
61
1

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部