有些時候咱們須要一些假數據來測試,在python中有一款很是好用的包,faker,能夠知足這類的需求。
項目地址 https://github.com/joke2k/fakerhtml
pip install faker
python
或者
直接上 github 下載安裝便可git
要建立假數據,須要先有一個faker實例github
from faker import Faker fake = Faker()
而後調用方法便可ide
fake.name() # 'Kristen Ward' fake.address() # '26745 Todd Park' # 'West Jamie, NV 91152-9807'
在faker中,name和address這種方法被稱爲提供器,提供器的類型不少,除了上面提到的name和address,還有:測試
bothify :建立隨機字符,他接受參數text,而後把text中的#和?替換成隨機的數字和字母,例子:ui
fake.bothify(text='### => ???') # 849 => DXX
實際上他是同時調用了lexify和numerify,二者一樣須要一個text參數,分別把text中的#和?替換爲隨機數字和字母
faker的提供器不少,想查找更多提供器,請看:https://faker.readthedocs.io/...code
想要建立中文數據,能夠使用下面的方法:htm
fake = Faker('zh_CN')
對象
Faker接受的本地化參數,建立的對象會生成對應語言的數據,若是沒有找到對應的語言,會使用默認的"en_US"
能夠在 https://faker.readthedocs.io/... 中查看全部支持的語言
有時候,你會想要建立本身的提供器,這時候只須要繼承提供器的基類,並實現一些方法,隨後調用add_provider將類加入到faker實例中便可
from faker import Faker fake = Faker() # 引入基類 from faker.providers import BaseProvider # 建立並繼承,實現方法 class MyProvider(BaseProvider): def foo(self): return 'bar' # 添加到實例中 fake.add_provider(MyProvider) # 調用 fake.foo() # 'bar'
當你想要生成相同的數據時,你須要調用faker的seed方法爲其設置種子,這樣以後使用提供器的時候,便會產生相同的內容
fake.seed(136) fake.name() # 'Kelsey Hamilton'
注意,在設置隨機種子後,若是調用同一個提供器兩次,第二次調用會使faker實例的種子失效
fake.seed(1) fake.name() # 'Ryan Gallagher' fake.address() # '7631 Johnson Village Suite 690\nAdamsbury, NC 50008' fake.name() # 'Stanley Parks' fake.seed(1) fake.name() # 'Ryan Gallagher' fake.name() # 'Jon Cole' fake.address() # '70669 Heather Grove\nNew Sierra, WI 00080-6360'