測試資料生成工具datafaker使用

2021-10-06 06:25:23 字數 3005 閱讀 6231

1、工具使用場景

在軟體開發測試過程,經常需要測試資料。這些場景包括:

1.1 後端開發

新建表後,需要構造資料庫測試資料,生成介面資料提供給前端使用。

1.2資料庫效能測試

生成大量測試資料,測試資料庫效能

1.3流資料測試

針對kafka流資料,需要不斷定時生成測試資料寫入kafka

2、安裝流程

如果是python2,需要安裝mysqldb

如果是python3,則安裝pymysql,並在datafaker目錄下init.py中新增以下兩行

import pymysql

pymysql.install_as_mysqldb()

3、datafaker使用

3.1 新建meta.txt檔案,將對應的表元資料寫入

id||int||自增id[:inc(id,1)]

name||varchar(20)||學生名字

school||varchar(20)||學校名字[:enum(file:

nickname||varchar(20)||學生小名[:enum(鬼泣, 高小王子, 歌神, 逗比)]

age||int||學生年齡[:age]

class_num||int||班級人數[:int(10, 100)]

score||decimal(4,2)||成績[:decimal(4,2,1)]

phone||bigint||**號碼[:phone_number]

email||varchar(64)||家庭網路郵箱[:email]

ip||varchar(32)||ip位址[:ipv4]

address||text||家庭位址[:address]

3.2命令列輸入

datafaker rdb mysql+mysqldb://user:password@localhost:3306/dw?charset=utf8 user 500  --meta meta.txt

#user是測試資料匯入的表 需事先建立好

#500是測試資料生成量,可配置

3.3從本地檔案meta.txt中讀取元資料,以,分隔符構造10條資料,列印在螢幕上不會在資料插入

$ datafaker rdb mysql+mysqldb://root:root@localhost:3600/test?charset=utf8 stu 10 --outprint --meta meta.txt --outspliter ,,
3.4 寫hive:產生1000條資料寫入hive的test庫,stu表中

其中yarn為使用者名稱,需要hive版本支援acid,不然請生成本地檔案,然後上傳到hdfs

datafaker hive hive://yarn@localhost:10000/test stu 1000 --meta data/hive_meta.txt
3.5 寫檔案:產生10條json格式資料寫入到/home目錄out.txt中

datafaker file /home out.txt 10 --meta meta.txt --format json
3.6 寫kafka:從本地meta.txt引數資料,以1秒間隔輸出到kafka的topic hello中

$ datafaker kafka localhost:9092 hello 1 --meta meta.txt --interval 1

^cgenerated records : 6

insert records : 6

time used: 6.285 s

json巢狀或任意資料結構(可不是jon)

datafaker kafka localhost:9092 hello 10 --metaj meta.txt
請使用–metaj指定元資料檔案meta.txt:

,]}

}

datafaker會替換meta.txt內容中帶標記的字串,並保留原格式,包括tab和空格,產生如下結果:

,]}

}

如果要使用正確格式的json,將元資料檔案內容壓縮

,]}}
3.7 寫hbase

datafaker hbase localhost:9090 test-table 10 --meta data/hbase.txt
需要開啟hbase thrift服務,不能為thrift2

例子中,建立一張表test-table, 列族為cf

元資料檔案hbase.txt內容為

rowkey||varchar(20)||sdflll

cf:name||varchar(20)||學生名字

cf:age||int||學生年齡[:age]

其中第一行必須為rowkey, 可帶引數,rowkey(0,1,4)表示將rowkey值和後面第一列,第五列值用_連線

後面行為列族中的列名,可以建立多個列族

3.8 寫入es

datafaker es localhost:9200 example1/tp1 100 --auth elastic:elastic --meta meta.txt
其中localhost:9200為es的連線方式,多個host用逗號分隔。如host1:9200,host2:9200

example1/tp1為index和type,以/分隔

elastic:elastic為賬號和密碼,若沒有,則可不帶該引數

3.9 資料寫入oracle

datafaker rdb oracle: stu 10 --meta meta.txt
sqlalchemy連線串必須為oracle:形式

測試資料生成

目的 sql server 搭建日誌傳輸,模擬災難轉移,在主庫上不斷生成測試資料,模擬生產環境。生成測試資料指令碼 表結構 if table dbo.t1 exists,then drop it if object id dbo.t1 u is not null drop table dbo.t1 ...

快速生成測試資料

select rownum as id,to char sysdate rownum 24 3600,yyyy mm dd hh24 mi ss as inc datetime,trunc dbms random.value 0,100 as random id,dbms random.string...

postgresql 生成測試資料

此處,我簡單的寫乙個例子,供參考 在postgresql9.1下面做的 1 準備知識 針對 postgres生成資料方法 生成序列 select from generate series 1,5 生成date select date generate series now now 1 week 1 ...