今天去参加婚礼了,回来的有些晚,所以简单测试一下fake库,用来生成假数据。
# _*_ encoding:utf-8 _*_
from faker import Faker
fake = Faker(locale='zh_CN')
print('详细地址:', fake.address())
print('城市:', fake.city())
print('姓名:', fake.name())
print('手机号码:', fake.phone_number())
print('身份证号:', fake.ssn())
输出结果:
详细地址: 山东省秀芳县淄川孙路G座 284402
城市: 永安县
姓名: 郭坤
手机号码: 13652625424
身份证号: 371322194701044098
测试了以后,发现这个库别的方面都挺好,但地址这块不是很满意,首先,他内置的市很少,我看了下他的源码:
https://github.com/joke2k/faker/blob/master/faker/providers/address/zh_CN/init.py
所有的市只有:
cities = (
"北京", "上海", "天津", "重庆", "哈尔滨", "长春", "沈阳", "呼和浩特",
"石家庄", "乌鲁木齐", "兰州", "西宁", "西安", "银川", "郑州", "济南", "太原",
"合肥", "武汉", "长沙", "南京", "成都", "贵阳", "昆明", "南宁", "拉萨",
"杭州", "南昌", "广州", "福州", "台北", "海口", "香港", "澳门", "通辽",
"兴安盟", "太原", "辛集", "邯郸", "沈阳", "辽阳", "兴城", "北镇", "阜新",
"哈尔滨", "齐齐哈尔", "淮安", "张家港", "海门", "六安", "巢湖", "马鞍山",
"永安", "宁德", "嘉禾", "荆门", "潜江", "大冶", "宜都", "佛山", "深圳",
"潮州", "惠州", "汕尾", "东莞", "梧州", "柳州", "合山", "六盘水", "关岭")
看到这个列表,至少我们省的好几个市都不在上面。还有这里面有一引起是省级市,比如北京,有一些县级市,如宜都。
我如果批量生成地址的话,会出现:
广东省拉萨市双滦太原路M座 353274
这样的一看就是假的地址,当然我们也确实要生成假地址,但总要表面上像真的一样。
因为这个问题,我搜了下网上,发现淘宝有地址库,但是可能需要购买或合作商才能使用。
总的来说
- faker库还是很好用的,生成测试数据方面挺不错。
- 地址库没有考虑到中国国情,做的比较差一点。我感觉要想做更好用的地址库,可以在网上爬取一些地址来使用,或者修改faker的地址生成规则。