default.yaml 6.0 KB
Newer Older
aaronchen2k2k's avatar
aaronchen2k2k 已提交
1
title: zendata数据配置语法说明
aaronchen2k2k's avatar
aaronchen2k2k 已提交
2
desc:
aaronchen2k2k's avatar
aaronchen2k2k 已提交
3

aaronchen2k2k's avatar
aaronchen2k2k 已提交
4
# 文件组成
aaronchen2k2k's avatar
aaronchen2k2k 已提交
5

aaronchen2k2k's avatar
aaronchen2k2k 已提交
6 7
# zendata以yaml格式的文件来定义各个字段的格式。
# yaml文件整体由文件说明和字段定义两部分组成。
aaronchen2k2k's avatar
aaronchen2k2k 已提交
8

aaronchen2k2k's avatar
aaronchen2k2k 已提交
9
# 文件说明
aaronchen2k2k's avatar
aaronchen2k2k 已提交
10

aaronchen2k2k's avatar
aaronchen2k2k 已提交
11 12 13 14
# title:   标题,可以用简短的文字概要描述该文件定义的数据类型。
# desc:    描述,可以用多行文本来详细描述该文件定义的数据类型,非必选项。
# author:  作者,非必选项。
# version:版本号,非必选项。
aaronchen2k2k's avatar
aaronchen2k2k 已提交
15

aaronchen2k2k's avatar
aaronchen2k2k 已提交
16
# 字段列表
aaronchen2k2k's avatar
aaronchen2k2k 已提交
17

aaronchen2k2k's avatar
aaronchen2k2k 已提交
18 19 20 21
# 字段定义部分都放在fields这个定义里面。
# 一个yaml文件可以包含一个或者多个字段。
# 字段列表以-field定义开始。
# 一个字段可以通过fields属性定义它的子字段。
aaronchen2k2k's avatar
aaronchen2k2k 已提交
22

aaronchen2k2k's avatar
aaronchen2k2k 已提交
23
# 字段定义
aaronchen2k2k's avatar
aaronchen2k2k 已提交
24

aaronchen2k2k's avatar
aaronchen2k2k 已提交
25 26 27 28
# field:    字段名,仅支持英文、数字、下换线和.
# range:    列表范围,最重要的定义。
# loop:     循环次数,可以定义某一字段循环多少次。
# loopfix:  每一次循环时的连接符。
aaronchen2k2k's avatar
aaronchen2k2k 已提交
29

aaronchen2k2k's avatar
aaronchen2k2k 已提交
30
# format:    支持格式化输出。
aaronchen2k2k's avatar
aaronchen2k2k 已提交
31

aaronchen2k2k's avatar
aaronchen2k2k 已提交
32 33
# prefix:   该字段的前缀。
# postfix:  该字段的后缀。
aaronchen2k2k's avatar
aaronchen2k2k 已提交
34

aaronchen2k2k's avatar
aaronchen2k2k 已提交
35 36 37
# length:   该字段的长度。如果不通过分隔符区分,则需要指定字段长度,单位是字节。
# leftpad:  左填充的字符。如果长度不够,可指定左填充的字符。默认是以空格左填充。
# rightpad: 右填充的字符。如果长度不够,可指定右填充的字符。
aaronchen2k2k's avatar
aaronchen2k2k 已提交
38

aaronchen2k2k's avatar
aaronchen2k2k 已提交
39
# config:    可以引用另外一个文件里面的定义。
aaronchen2k2k's avatar
aaronchen2k2k 已提交
40

aaronchen2k2k's avatar
aaronchen2k2k 已提交
41 42 43 44
# from:     引用某一个定义文件。
# use:      使用被引用文件中定义的若干实例。all代表使用所有。
# select:   如果引用的文件是excel表,可以查询里面的某一个字段。
# where:     如果引用的文件是excel表,可以使用查询条件。
aaronchen2k2k's avatar
aaronchen2k2k 已提交
45

aaronchen2k2k's avatar
aaronchen2k2k 已提交
46 47 48 49 50 51
# range定义

# 使用逗号连接不同的元素。比如 range: 1,2,3
# 元素也可以是一个区间。比如 range:1-10, A-Z
# 区间可以通过冒号:来指定步长。比如 range:1-10:2。
# 步长可以是小数。比如 range: 1-10:0.1
52
# 步长可以是负数。比如 range: 9-1:-1
aaronchen2k2k's avatar
aaronchen2k2k 已提交
53 54 55
# 区间可以通过R来指定随机。比如 range: 1-10:R,随机和步长只能二选一。
# 可以通过一个文件来指定列表。比如range: list.txt。文件名是相对路径时,以配置文件为基准计算。
# 可以通过{n}的方式来重复某一个元素。比如 range: user1{100},user2{100}
56
# 如果区间或者几个元素需要重复,需要用[]括起来。比如 range: [user1,user2,user3]{100}, [1-100]{10}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
57 58 59 60 61 62

author: zentao
version: 1.0

fields:

aaronchen2k2k's avatar
aaronchen2k2k 已提交
63 64 65
  - field: field_common                 # 默认的列表类型,通过逗号隔成若干区段。
    range: 1-10, 20-25, 27, 29, 30      # 1,2,3...,10,20,21,22...,25,27,29.30
    prefix: int_                        # 前缀
aaronchen2k2k's avatar
aaronchen2k2k 已提交
66
    postfix: "\t"                       # 后缀,特殊字符加引号,否则无法解析。
aaronchen2k2k's avatar
aaronchen2k2k 已提交
67

68 69
  - field: field_step                   # 区间可以指定步长,步长可以为小数或者负数。
    range: 1-10:2, 1-2:0.1,9-1:-1     # 1,3,5,7,9,1, 1.1,1.2...,2,9,8,7,1
aaronchen2k2k's avatar
aaronchen2k2k 已提交
70
    postfix: "\t"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
71

aaronchen2k2k's avatar
aaronchen2k2k 已提交
72 73
  - field: field_random                 # 通过R属性指定随机。R属性和步长不能同时出现。
    range: 1-10:R                       # 1,5,8...
aaronchen2k2k's avatar
aaronchen2k2k 已提交
74
    postfix: "\t"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
75

aaronchen2k2k's avatar
aaronchen2k2k 已提交
76
  - field: field_file                   # 从一个文件中读取列表,并指定随机。
aaronchen2k2k's avatar
aaronchen2k2k 已提交
77 78
    range: users.txt:R                  # 该文件中一行作为一个元素,并随机。
    postfix: "\t"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
79

aaronchen2k2k's avatar
aaronchen2k2k 已提交
80 81 82 83
  - field: field_loop                   # 自循环的字段。
    range: a-z                          # a_b_c | d_e_f | g_h_i
    loop: 3                             # 循环三次
    loopfix: _                          # 每次循环的连接符。
aaronchen2k2k's avatar
aaronchen2k2k 已提交
84
    postfix: "\t"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
85

aaronchen2k2k's avatar
aaronchen2k2k 已提交
86
  - field: field_repeat                 # 通过{}定义重复的元素。
87
    range: u-1{3},[u2,u3]{2},[1-3]{3}   # u-1,u1,u1,u2,u2,u3,u3,1,1,1,2,2,2,3,3,3
aaronchen2k2k's avatar
aaronchen2k2k 已提交
88
    postfix: "\t"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
89

aaronchen2k2k's avatar
aaronchen2k2k 已提交
90 91 92
  - field: field_format                 # 通过格式化字符串输出。
    range: 1-10                         # passwd 1,passwd 2,passwd 3 ... passwd10。
    format: "passwd%02d"                # 用%2d补零,使密码整体保持8位,%2d默认补空格。
aaronchen2k2k's avatar
aaronchen2k2k 已提交
93
    postfix: "\t"
94 95 96 97 98
    
  - field: field_length                 # 固定长度的字段。
    range: 1-100                        # 001,002,003..., 099,100
    length: 3                           # 三个字节。
    leftpad: 0                          # 使用0左填充。
aaronchen2k2k's avatar
aaronchen2k2k 已提交
99

aaronchen2k2k's avatar
aaronchen2k2k 已提交
100
  - field: field_use_another_file       # 可以引用其他的定义文件。
aaronchen2k2k's avatar
aaronchen2k2k 已提交
101 102
    config: numb_field.yaml             # 引用当前目录下面的numb_field.yaml文件里面的定义。
    postfix: "\t"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
103

aaronchen2k2k's avatar
aaronchen2k2k 已提交
104
  - field: field_use_ranges_file        # 引用其他的定义文件,该文件定义了多个range,他们共享了一些field层面的属性。
aaronchen2k2k's avatar
aaronchen2k2k 已提交
105
    from: numb_ranges.yaml              # 引用当前目录下面的numb_field.yaml文件里面的定义。
aaronchen2k2k's avatar
aaronchen2k2k 已提交
106
    use: medium                         # 使用该文件中定义的medium分组。
aaronchen2k2k's avatar
aaronchen2k2k 已提交
107
    postfix: "\t"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
108

aaronchen2k2k's avatar
aaronchen2k2k 已提交
109 110
  - field: field_use_instance           # 引用其他的定义文件,该文件定义了多个实例。
    from: system.ip.v1.yaml             # 引用data/system/ip/v1.yaml
111
    use: privateC,privateB              # 使用该文件中定义的privateC和privateB两个实例。
aaronchen2k2k's avatar
aaronchen2k2k 已提交
112
    postfix: "\t"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
113

aaronchen2k2k's avatar
aaronchen2k2k 已提交
114 115 116
  - field: field_use_excel              # 从excel数据源里面取数据。
    from: system.address.v1.china       # 从data/system/address/v1.xlsx文件中读取名为china的工作簿。
    select: city                        # 查询city字段。
aaronchen2k2k's avatar
aaronchen2k2k 已提交
117 118
    where: state like '%山东%'           # 条件是 省份包含山东。
    postfix: "\t"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
119

aaronchen2k2k's avatar
aaronchen2k2k 已提交
120
  - field: field_with_children          # 嵌套字段
aaronchen2k2k's avatar
aaronchen2k2k 已提交
121
    fields:
aaronchen2k2k's avatar
aaronchen2k2k 已提交
122
      - field: child1
aaronchen2k2k's avatar
aaronchen2k2k 已提交
123 124 125 126 127 128 129 130 131 132 133
        range: a-z
        prefix: part1_
        postfix: '|'

      - field:  child2
        range: A-Z
        prefix: part2_
        postfix: '|'

      - field: child_with_child
        prefix: part3_
aaronchen2k2k's avatar
aaronchen2k2k 已提交
134 135
        width: 12
        fields:
aaronchen2k2k's avatar
aaronchen2k2k 已提交
136 137 138 139
          - field: field_grandson
            prefix: int_
            range: 10-20
            postfix: