Faker——製造假數據

Faker——製造假數據

應對需求

在軟件需求、開發、測試過程中,有時候需要使用一些測試數據,針對這種情況,我們一般要麼使用已有的系統數據,要麼需要手動製造一些數據。

由於現在的業務系統數據多種多樣,千變萬化。在手動製造數據的過程中,可能需要花費大量精力和工作量,此項工作既繁複又容易出錯,而且,部分數據的手造工作無法保障:比如UUID類數據、MD5、SHA加密類數據等。

介紹

Faker是一個Python包,開源的GITHUB項目,主要用來創建僞數據,使用Faker包,無需再手動生成或者手寫隨機數來生成數據,只需要調用Faker提供的方法,即可完成數據的生成。

現在的Faker支持 Python Faker, PHP Faker, Perl Faker, and by Ruby Faker。

使用

安裝

pip install Faker

基本用法
from faker import Faker
fake = Faker()
fake.name()

‘Meredith Chavez’

fake.address()

‘4260 Carpenter Cove\nPort Joseph, IN 13731’

fake.text()

‘Finish health analysis write cause in agreement their. Challenge set brother likely not.\nBig language plant look marriage. Or large large so stay heart cut.’

Provider

製造更加複雜的假數據,需要加載不同的Provider。

base Provider

base Provider無需加載直接可用,是默認使用的provider。
可以製造一些基礎的數據,例如任意長度的數字,字母組合,但沒有實際的意義。

# 數字加字母
fake.bothify(text="## ??", letters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")

‘76 vX’

# 範圍內數字
fake.random_int(min=0, max=9999, step=1)

3830

其他官方Provder
from faker.providers import internet
fake.add_provider(internet)
fake.ipv4_private()

‘10.151.113.226’

本地化

fake = Faker('zh_CN')
fake.text()

‘作品看到一定威望.管理登錄最大這麼出來生活操作.\n之後留言類別很多最大無法.你們美國報告.分析時候北京威望.責任的話中國您的.\n系列教育還有完成全國發布手機這樣.一種兩個應用登錄.以下應用一樣廣告.\n規定喜歡完全學生首頁幫助.\n名稱之後希望建設業務歷史如此繼續.一定管理回覆詳細閱讀文章.以下的是技術計劃什麼.\n起來這個搜索最新公司.帖子開發來源完成已經.問題還有客戶介紹.’

fake.address()

‘青海省阜新市朝陽李街H座 986383’

創建自己的Provider

from faker.providers import BaseProvider
class MyProvider(BaseProvider):
    def foo(self):
        return 'bar'
fake.add_provider(MyProvider)
fake.foo()

‘bar’

providers類名 作用
base 基礎包,包含各種數字字母隨機方法
address 地址相關
automotive 汽車行業
bank 銀行
barcode 條碼
color 顏色
company 公司(職稱,口號)
credit_card 信用卡
currency 貨幣
date_time 日期時間
file 文件(擴展名,文件名,帶路徑文件名)
geo 地理
internet 互聯網(郵箱,域名,hostname,圖片url,ipv4、ipv6地址,mac地址)
isbn 書號
job 工作
lorem 文章句子
misc 雜項(md5,二進制串,密碼,sha1,sha256,uuid)
person 人相關(人名(可分男女),姓,名,)
phone_number 電話號碼(手機號,電話號碼)
profile 製造JSON格式的數據
python python相關(小數,列表,字典,集合,元組)
ssn 搞不懂
user_agent 用戶代理(安卓設備渠道token,各類瀏覽器標識,操作系統token)

在命令行使用

  • -h,請求幫助。
  • -o filename,輸出重定向到指定文件夾。
  • -l zh_CN,默認是英文,改爲輸出中文。
  • -r pepeat,輸出指定數量的隨機數據。
  • -s sep,在生成的輸出之間用指定的分隔符分割。
  • -i {custom_provider1 custom_provider2},使用指定的provider類所在文件。

創建屬於自己的provider

from faker.providers import BaseProvider

class Provider(BaseProvider):
    def foo(self):
        return 'bar'

fake.add_provider(Provider)
fake.foo()
    'bar'

獲取random示例

fake.random.randint(1,10)

重現隨機

可以設置種子,就可以方便測試重現。

from faker import Faker
fake = Faker()
Faker.seed(4321)

print(fake.name())
Jason Brown
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章