default.yaml 6.0 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
title: zendata数据配置语法说明
desc: 

  # 文件组成

    # zendata以yaml格式的文件来定义各个字段的格式。
    # yaml文件整体由文件说明和字段定义两部分组成。

  # 文件说明

    # title:   标题,可以用简短的文字概要描述该文件定义的数据类型。
    # desc:    描述,可以用多行文本来详细描述该文件定义的数据类型,非必选项。
    # author:  作者,非必选项。
    # version:版本号,非必选项。

  # 字段列表

    # 字段定义部分都放在fields这个定义里面。
    # 一个yaml文件可以包含一个或者多个字段。
    # 字段列表以-field定义开始。
    # 一个字段可以通过fields属性定义它的子字段。

  # 字段定义

    # field:    字段名,仅支持英文、数字、下换线和.
    # range:    列表范围,最重要的定义。
    # loop:     循环次数,可以定义某一字段循环多少次。
    # loopfix:  每一次循环时的连接符。

    # format:    支持格式化输出。   

    # prefix:   该字段的前缀。
    # postfix:  该字段的后缀。

    # length:   该字段的长度。如果不通过分隔符区分,则需要指定字段长度,单位是字节。
    # leftpad:  左填充的字符。如果长度不够,可指定左填充的字符。默认是以空格左填充。
    # rightpad: 右填充的字符。如果长度不够,可指定右填充的字符。

    # config:    可以引用另外一个文件里面的定义。

    # from:     引用某一个定义文件。
    # use:      使用被引用文件中定义的若干实例。all代表使用所有。
    # select:   如果引用的文件是excel表,可以查询里面的某一个字段。
    # where:     如果引用的文件是excel表,可以使用查询条件。
  
  # range定义

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

author: zentao
version: 1.0

fields:

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

  - field: field_step                   # 区间可以指定步长。
    range: 1-10:2, 1-2:0.1              # 1,3,5,7,9,1, 1.1,1.2...,2
    postfix: "\t"

  - field: field_random                 # 通过R属性指定随机。R属性和步长不能同时出现。
    range: 1-10:R                       # 1,5,8...
    postfix: "\t"

  - field: field_file                   # 从一个文件中读取列表,并指定随机。
    range: users.txt:R                  # 该文件中一行作为一个元素,并随机。
    postfix: "\t"

  - field: field_loop                   # 自循环的字段。
    range: a-z                          # a_b_c | d_e_f | g_h_i
    loop: 3                             # 循环三次
    loopfix: _                          # 每次循环的连接符。
    postfix: "\t"

  - field: field_repeat                 # 通过{}定义重复的元素。
    range: user-1{3},[user2,user3]{2}   # user-1,user-1,user-1,user2,user3,user2,user3
    postfix: "\t"

  - field: field_format                 # 通过格式化字符串输出。
    range: 1-10                         # passwd 1,passwd 2,passwd 3 ... passwd10。
    format: "passwd%02d"                # 用%2d补零,使密码整体保持8位,%2d默认补空格。
    postfix: "\t"

  - field: field_use_another_file       # 可以引用其他的定义文件。
    config: number.yaml                 # 引用当前目录下面的number.yaml文件里面的定义。
    postfix: "\t"

  - field: field_use_ranges             # 引用內置的定义文件,该文件定义了多个range,他们共享了一些field层面的属性。
    from: custom.test.number.v1.yaml    # 引用data/custom/number/v1.yaml文件里面的ranges定义。
    use: medium                         # 使用该文件中定义的medium分组。
    postfix: "\t"

  - field: field_use_instance           # 引用其他的定义文件,该文件定义了多个实例。
    from: system.ip.v1.yaml             # 引用data/system/ip/v1.yaml
    use: privateC,privateC              # 使用该文件中定义的privateC和privateB两个实例。
    postfix: "\t"

  - field: field_nested_instant         # 引用其他的定义文件,且该文件引用了其他示例。
    from: custom.ip.private.yaml        # 引用data/custom/ip/private.yaml
    use: all                            # 使用该文件中的所有实例。
    prefix: "{"
    postfix: "}"

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

  - field: field_with_children          # 嵌套字段
    fields:
      - field: child1 
        range: a-z
        prefix: part1_
        postfix: '|'

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

      - field: child_with_child
        prefix: part3_
        postfix: 
        fields: 
          - field: field_grandson
            prefix: int_
            range: 10-20
            postfix: