ZenData3.0正式版发布,支持从数据库表的列类型、名称和记录生成字段配置。

2023-04-14 08:03:14
陈琦
原创
2778
摘要:ZenData使用YAML格式的配置文件,帮助您快速、方便地生成各种测试数据。内嵌Web版的设计工具,数据配置语法简明、便于扩展,支持多种数据输出格式。

ZenData3.0正式版发布,可解析数据库表的列类型、名称和记录,生成相关字段配置

3.0正式版更新内容

  • 支持从数据库表的列类型生成字段配置;
  • 支持从数据库表的列名称生成字段配置;
  • 支持从数据库表的已有记录生成字段配置;
  • 修复了一些小的问题。

ZenData用途

ZenData主要两大功能:数据生成和数据解析。通过一个配置文件,可以使用ZenData生成您想要的各种数据。同样也可以对某一个数据文件,指定其数据类型定义的配置文件,完成到结构化数据的解析。

ZenData可以用于手工测试场景下面测试数据的准备,也可以用于自动化测试脚本里面的数据生成和解析,还可一键生成海量数据用于性能和压力测试。

ZenData特性

  1. 简单无依赖,只有一个可执行文件,即可满足命令行生成和HTTP接口两种数据生成服务;
  2. 使用配置文件来生成数据,使用人员不需要有开发知识,即可快速上手应用;
  3. 提供了简明、强大的数据定义语法,如分组、区间、步长、循环、随机、格式化、前后缀、函数和表达式等,配置灵活、扩展方便;
  4. 支持从文本文件中读取数据,方便用户对字段取值进行精确控制;
  5. 提供了Excel表格数据的标准SQL查询接口,数据维护和萃取更加灵活;
  6. 使用预制的序列(ranges)、实例(instances)、配置(config)对定义进行复用,以解决复杂数据的定义;
  7. 语法支持继承和扩展,为数据定义文件间的复用提供方便;
  8. 支持从数据库表的列类型、名称和记录生成数据字段配置;
  9. 支持文本、JSON、XML、 CSV、SQL 、Excel、ProtoBuf多种输出格式;
  10. 可反向解析文章生成YAML配置模板;內置互联网黑话中文词库,文章创作方便而又有趣;
  11. 发行包內置了常见的基础业务数据的定义文件;
  12. 提供了HTTP接口形式的数据生成服务API,各种语言都可以方便调用;
  13. 內置数据设计 客户端,减缓数据定义语法的学习曲线,数据管理和创作更高效。

下载地址

生成时间格式数据

数据定义

fields:
  - field: date
    from: time.date.v1.yaml
    use: date
    postfix: " "
  - field: cn_date
    from: time.date.v1.yaml
    use: chinese
    postfix: " "
  - field: time
    from: time.time.v1.yaml
    use: time
    postfix: " "
  - field: time1     # 生成时间数据,以当前时间为准,从一月前到一周后。
    range: "(-1M)-(+1w):60"        # 支持当前时间的运算,Y、M、D、W、h、m、s分别对应年、月、日、周、时、分、秒。
    type: timestamp
    format: "YY/MM/DD hh:mm:ss"
    postfix: "\t"
  - field: time2         # 生成时间数据,指定起止时间的方式,从早上9点到今天结束,间隔1分钟(60秒)。
    range: "20210101 000000-20210101 230000:60"    # 起始、结束时间用-分隔,默认为当天的开始和结束时间。
    type: timestamp
    format: "YY/MM/DD hh:mm:ss"
    postfix: "\t"
  - field: time3   # 只设置一个时间时,默认当作起始时间,结束时间为当前日期的23时59分59秒
    range: "20210821 000000:60"  # 和20210821 000000-:60效果是一样的
    type: timestamp
    format: "YY/MM/DD hh:mm:ss"
    postfix: "\t"
  - field: time4
    range: "-20210830 235959:60" # 省略起始时间的用法
    type: timestamp
    format: "YY/MM/DD hh:mm:ss"
    postfix: "\t"
  - field: time5     # 生成时间数据,以当前时间为准,从一月前到一周后。
    range: "(-1M)-(+1w):60m"        # 步长支持Y、M、D、W、h、m、s分别对应年、月、日、周、时、分、秒
    type: timestamp
    format: "YY/MM/DD hh:mm:ss"
    postfix: "\t"
  - field: time6     # 生成时间数据,以当前时间为准,从一月前到一周后。
    range: "(-1M)-(+1w):1D"        # 步长支持Y、M、D、W、h、m、s分别对应年、月、日、周、时、分、秒
    type: timestamp
    format: "YY/MM/DD hh:mm:ss"
    postfix: "\t"
  - field: time7     # 生成时间数据,以当前时间为准,从一月前到一周后。
    range: "(+1w)-(-1M):-1D"        # 步长为-1天
    type: timestamp
    format: "YY/MM/DD hh:mm:ss"
    postfix: "\t"
  - field: time8     # 生成时间数据,以当前时间为准,从一月前到一周后。
    range: "(+1w)-(-1M):1D"        # 设置步长为1天,但是会自动的根据起止时间调整正负,实际为-1天
    type: timestamp
    format: "YY/MM/DD hh:mm:ss"

执行命令

zd -d demo/28_datetime.yaml


执行结果

生成UUID格式数据

数据定义

fields:
  - field: field_uuid
    format: "uuid(-)"

执行命令

                    zd -d demo/29_uuid.yaml

执行结果




新增MySQL字段属性的支持

执行命令

zd -i demo/field_test.sql -o demo/output

生成结果

                    title: table field_test
desc: ""
author: automated export
version: "1.0"
fields:
    - field: Bit
      range: 0,1
    - field: TinyInt
      range: 0-255
    - field: SmallInt
      range: 0-65535
    - field: MediumInt
      note: "MEDIUMINT [0,2^24-1]"
      range: 0-65535
    - field: GeometryCollection
      range: "GEOMETRYCOLLECTION"
    - field: Int
      note: "INI [0,2^32-1]"
      range: 0-100000
    - field: BigInt
      note: "BIGINT [0,2^64-1]"
      range: 0-100000

数据设计客户端

我的数据

內置数据

数据设计器


评论列表
森哥 2023-04-18 17:21:39
3.0版本在centos安装后使用,发现输出为csv格式报错,xlsx格式正常
[root@iZuf64hsu25unqZ zd]# ./zd demo/01_range.yaml -n 10000 -table user -T -o demo/output/dd.csv
isRelease=true
isRunAsBackendProcess=false
p=./zd
WorkDir=/opt/zd/
panic: interface conversion: interface {} is int64, not string

goroutine 1 [running]:
github.com/easysoft/zendata/internal/pkg/service.(*OutputService).GenExcel(0x1?)
/Users/aaron/rd/project/zentao/go/zd/internal/pkg/service/output-excel.go:48 +0x5fa
github.com/easysoft/zendata/internal/pkg/service.(*MainService).PrintOutput(0xc000074a40)
/Users/aaron/rd/project/zentao/go/zd/internal/pkg/service/main.go:105 +0x174
github.com/easysoft/zendata/internal/pkg/service.(*MainService).GenerateFromContents(0x7ffce56e683d?, {0xc0002cb330, 0x1, 0x1})
/Users/aaron/rd/project/zentao/go/zd/internal/pkg/service/main.go:32 +0xc5
github.com/easysoft/zendata/internal/pkg/ctrl.(*MainCtrl).Generate(0xc00010dbc0, {0xc0002cb330?, 0x1, 0x1})
/Users/aaron/rd/project/zentao/go/zd/internal/pkg/ctrl/main.go:29 +0x168
main.genData({0xc0002cb330, 0x1, 0x1})
/Users/aaron/rd/project/zentao/go/zd/cmd/command/main.go:224 +0xa9
main.opts({0xc0002cb330?, 0xc0000240a0?, 0xb489d0?})
/Users/aaron/rd/project/zentao/go/zd/cmd/command/main.go:201 +0x154
main.execCommand()
/Users/aaron/rd/project/zentao/go/zd/cmd/command/main.go:157 +0x2fe
main.main()
/Users/aaron/rd/project/zentao/go/zd/cmd/command/main.go:137 +0xf05
陈琦 2023-04-19 10:45:31
已修复
陈琦 2023-04-19 10:46:20
加微信 aaronchen2k 我给你一个新包
1/1
发表评论
评论通过审核后显示。
联系我们