1. 程式人生 > 程式設計 >Python 隨機生成測試資料的模組:faker基本使用方法詳解

Python 隨機生成測試資料的模組:faker基本使用方法詳解

本文例項講述了Python 隨機生成測試資料的模組:faker基本使用方法。分享給大家供大家參考,具體如下:

本文內容:

  1. faker的介紹
  2. faker的使用
  3. 小例子:生成隨機的資料表資訊

首發日期:2018-06-15


faker介紹:

  • faker是python的一個第三方模組,是一個github上的開源專案。
  • 主要用來建立一些測試用的隨機資料。

官方文件:https://faker.readthedocs.io/en/master/index.html


faker的使用:

1.安裝模組

pip3 install Faker

【使用faker也能識別成功,不過新版已經更新為Faker】

2.匯入模組

from faker import Faker

【主要使用的是Factory類,而匯入Faker,會同時匯入Factory】

image

3.使用步驟:

  • 3.1初始化:
    fake=Faker()
    • Faker()呼叫的是Factory的create方法,常用引數選項:image
      • 用於生成本地化資料:locale【預設情況下是en_US,所以生成的資料是美式英文的】
        • zh-CN代表使用中國版
        • 想了解更多國家版本,可以參考 https://faker.readthedocs.io/en/master/index.html#localization
      • providers是一個包含了多種生成隨機資料的生成器的“提供者”,比如他包含了生產隨機姓名的生成器,包含了隨機地址的生成器。如果我們想要自己定義隨機生成的資料的規則,那麼我們需要自定義providers。如何生成一個providers,可以參考https://faker.readthedocs.io/en/master/index.html#how-to-create-a-provider
        • image
  • 3.2.呼叫方法:
    • 利用Faker物件呼叫方法,呼叫方法的返回值就是隨機的資料。
    • 不同的資料需要呼叫不同的方法,常見方法參見下面。
from faker import Faker


# fake=Faker() #預設生成美國英文資料
fake=Faker(locale='zh_CN')

# 地址類
print("地址類".center(20,"-"))
print(fake.address())#海南省成市豐都深圳路p座 425541
print(fake.street_address())#深圳街X座
print(fake.street_name())#長沙路
print(fake.city_name(),fake.city())#蘭州 貴陽市 (相差“市”)
print(fake.province())#陝西省


#公司類:
print("公司類".center(20,"-"))
print(fake.company())#惠派國際公司資訊有限公司
print(fake.company_suffix())#網路有限公司
print(fake.company_prefix())#鑫博騰飛

#個人資訊類
print("個人資訊類".center(20,"-"))
print(fake.name())#東浩
print(fake.simple_profile())
#{'username': 'leihan','name': '武帥','sex': 'F','address': '吉林省淮安市雙灤家街C座 210434','mail': '[email protected]','birthdate': '1988-11-12'}
print(fake.user_name(),fake.password(special_chars=False))#ajiang zI2QbHy02p

#文章類
print("文章類".center(20,"-"))
print(fake.word())#當前
print(fake.words(3))#['歡迎','支援','圖片']
print(fake.sentence(3))#精華有關一些.
print(fake.paragraph())#大家電話空間一起操作圖片要求.上海發展到了之間使用者也是的人.必須記者關係介紹註冊.使用者時候投資釋出.

常用方法:

https://faker.readthedocs.io/en/master/locales/zh_CN.html 由於主要使用中文資料,所以提供常見的方法示例是中文的。想要了解其他的,可以在官網點選其他語言,參考示例結果,不過方法大體上都是相同的。

地址資訊類:

  • fake.address():完整地址,比如海南省成市豐都深圳路p座 425541
  • fake.street_address():街道+地址,比如興城路A座
  • fake.street_name():街道名,比如宜都街
  • fake.city_name():城市名,比如蘭州
  • fake.city():城市,比如蘭州市
  • fake.province():省份名,比如陝西省
  • fake.postcode():郵編
  • fake.country():國家

公司資訊類:

  • fake.company():公司名,比如惠派國際公司資訊有限公司
  • fake.company_suffix():公司名字尾(公司性質),比如網路有限公司
  • fake.company_prefix():公司名字首,比如鑫博騰飛

日期類:

  • fake.date(pattern="%Y-%m-%d",end_datetime=None)
  • fake.year():隨機年份
  • fake.day_of_week():隨機星期數
  • fake.time(pattern="%H:%M:%S",end_datetime=None):隨機時間

網路類:

  • fake.company_email():企業郵箱
  • fake.email():郵箱

個人資訊類:

  • fake.name():姓名

  • fake.user_name(*args,**kwargs):使用者名稱,只是隨機的英文姓名組合,一般是6位
  • fake.phone_number():電話號碼
  • fake.simple_profile(sex=None):簡略個人資訊,包括使用者名稱,姓名,性別,地址,郵箱,出生日期。比如{'username': 'chao','name': '胡秀蘭','sex': 'M','address': '寧夏回族自治區玉市沙灣寧德路t座 873713','mail': '[email protected]','birthdate': '1998-06-12'}
  • fake.profile(fields=None,sex=None):詳略個人資訊,比簡略個人資訊多出公司名、血型、工作、位置、域名等等資訊。
  • fake.password():密碼
    • 引數選項:length:密碼長度;special_chars:是否能使用特殊字元;digits:是否包含數字;upper_case:是否包含大寫字母;lower_case:是否包含小寫字母。
    • 預設情況:length=10,special_chars=True,digits=True,upper_case=True,lower_case=True
  • fake.job():工作

文章類:

  • fake.word(ext_word_list=None):隨機詞語
    • ext_word_list可以是一個列表,那麼詞語會從列表中取
  • fake.words(nb=3,ext_word_list=None):隨機多個詞語
    • nb是數量,對於words來說是返回多少個詞語
  • fake.sentence(nb_words=6,variable_nb_words=True,ext_word_list=None):隨機短語(會包括短語結束標誌點號)
  • fake.paragraph(nb_sentences=3,variable_nb_sentences=True,ext_word_list=None):隨機段落
  • fake.paragraphs(nb=3,ext_word_list=None):多個隨機段落

資料型別類:

  • fake.pystr(min_chars=None,max_chars=20):自定義長度的隨機字串
  • fake.pyint():隨機整數

PS:

想了解Faker的更多用法,可以參考官方文件:https://faker.readthedocs.io/en/master/index.html


小例子:生成隨機的資料表資訊

注意:這裡為了例子簡便,對於資料庫操作就直接使用“命令式”的了,而不使用ORM模型式的了。

實現過程:

  1. 利用pymysql連線資料庫
  2. 建立表
  3. 利用fake格式化要插入的資料
  4. 利用pymysql執行插入語句

程式碼:

import pymysql
from faker import Faker

conn=pymysql.connect(host="localhost",port=3306,user="root",password="123456",db="it",charset="utf8")

cursor=conn.cursor()
#這裡給出表結構,如果使用已存在的表,可以不建立表。
sql="""
create table user(
id int PRIMARY KEY auto_increment,username VARCHAR(20),password VARCHAR(20),address VARCHAR(35) 
)
"""
cursor.execute(sql)
fake=Faker("zh-CN")
for i in range(20):
  sql="""insert into user(username,password,address) 
  values('%s','%s','%s')"""\
    %(fake.user_name(),fake.password(special_chars=False),fake.address())
  cursor.execute(sql)

conn.commit()
cursor.close()
conn.close()

結果:

image

PS:這裡再提供幾款相關工具供大家參考使用:

線上隨機生成個人資訊資料工具:
http://tools.jb51.net/aideddesign/rnd_userinfo

線上隨機字元/隨機密碼生成工具:
http://tools.jb51.net/aideddesign/rnd_password

線上隨機數字/字串生成工具:
http://tools.jb51.net/aideddesign/suijishu

更多關於Python相關內容感興趣的讀者可檢視本站專題:《Python數學運算技巧總結》、《Python字串操作技巧彙總》、《Python編碼操作技巧總結》、《Python資料結構與演算法教程》、《Python函式使用技巧總結》、《Python入門與進階經典教程》及《Python檔案與目錄操作技巧彙總》

希望本文所述對大家Python程式設計有所幫助。