在项目开发初期,为了方便测试,我们总是在系统中创建大量的伪造数据,以尽可能地模拟真实环境。例如,要创建一批用户名,创建一段文本,或电话号码,或街道地址、IP地址等。平时我们基本上是随便敲键盘,随便编个串,当然谁也不认识谁。现在你不这样做了。faker可以满足你的所有需求。首先安装fakerpiinstallFaker创建一个faker对象fromfakerimportFakerfake=Faker()伪造一个名字>>>fake.name()'JoshuaReed'伪造一个地址>>>fake.address()'554HoffmanLocksSuite216\nElizabethstad,RI23081'伪造一个浏览器UA>>>fake.chrome()'Mozilla/5.0(X11;Linux686)AppleWebKit/532.0(KHTML,likeGecko)Chrome/35.0.870.0Safari/532.0'伪造日期对象>>>fake.date()'1984-08-17'>>>fake.date_object()datetime.date(1980,9,27)但是他可以帮你伪造任何你需要的东西,如果你不知道它可以伪造什么,你可以用dir(fake)查一下.它可以伪造近300种东西。如果还是不能满足你的需求,你可以提交PR到它的Github或者自己扩展问题。上面假的东西,比如名字和街道,都是英文的。它不能支持它。中文支持怎么样?肯定可以的,只要在创建Faker对象的时候指定语言>>>fake=Faker("zh_CN")>>>fake.name()'庄阳'>>>fake.address()'浙江省台北县深北区新北京街第一座285123'>>>fake.phone_number()'13223924289'你会发现假数据相当真实。除了中文,还支持日文、韩文、德文等上百种语言,当然也支持命令行模式-h查看帮助文档faker[-h][--version][-ooutput][-l{bg_BG,cs_CZ,...,zh_CN,zh_TW}][-rREPEAT][-sSEP][-i{package.containing.custom_providerotherpkg.containing.custom_provider}][fake][fakeargument[fakeargument...]]C:\Users\lzjun\workspace\>fakernameSamanthaWashington问题又来了,我可以自己造假数据吗?比如我想随机生成一个基于Android设备的User-AgentfromfakerimportFakerfake=Faker()fromfaker.providersimportBaseProvider#CreateacustomproviderclassMyProvider(BaseProvider):defandroid_ua(self):return'xxxxxx'#添加一个providerfake.add_provider(MyProvider)>>>fake.android_ua()>>>'xxxxxx'太简单了。不管你是假新闻还是假老婆,都可以通过provider来实现。另外,faker作为源码还是一个非常值得研究的库。
