Python:随机生成测试数据的模块——faker的基本使用

一.本文内容:

  1. faker的介绍
  2. faker的使用
  3. 小例子:生成随机的数据表信息

二.faker介绍:

  • faker是python的一个第三方模块,是一个github上的开源项目。
  • 主要用来创建一些测试用的随机数据。

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

三.faker使用:

1.安装模块

  • pip install Faker不行可以用下面这个安装
  • -m pip install --upgrade pip -i https://pypi.douban.com/simple

【使用faker也能识别成功,不过新版已经更新为Faker】

2.导入模块

  • from faker import Faker

【主要使用的是Factory类,而导入Faker,会同时导入Factory】

3.使用步骤:

        3.1初始化

  • fake=Faker()
  • Faker()调用的是Factory的create方法,常用参数选项:

 

https://faker.readthedocs.io/en/master/index.html#how-to-create-a-providericon-default.png?t=LA92https://faker.readthedocs.io/en/master/index.html#how-to-create-a-provider

 

  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': 'lishao@hotmail.com', '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   由于主要使用中文数据,所以提供常见的方法示例是中文的。想要了解其他的,可以在官网点击其他语言,参考示例结果,不过方法大体上都是相同的。 

1.地址信息类:

fake.address():完整地址,比如海南省成市丰都深圳路p座 425541
fake.street_address():街道+地址,比如兴城路A座
fake.street_name():街道名,比如宜都街
fake.city_name():城市名,比如兰州
fake.city():城市,比如兰州市
fake.province():省份名,比如陕西省
fake.postcode():邮编
fake.country():国家

2.公司信息类:

fake.company():公司名,比如惠派国际公司信息有限公司
fake.company_suffix():公司名后缀(公司性质),比如网络有限公司
fake.company_prefix():公司名前缀,比如鑫博腾飞

3.日期类:

fake.date(pattern="%Y-%m-%d", end_datetime=None)
fake.year():随机年份
fake.day_of_week():随机星期数
fake.time(pattern="%H:%M:%S", end_datetime=None):随机时间

4.网络类:

fake.company_email():企业邮箱
fake.email():邮箱

5.个人信息类:

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': 'uxiao@yahoo.com', '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():工作

6.文章类:

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):多个随机段落

7.数据类型类:

fake.pystr(min_chars=None, max_chars=20):自定义长度的随机字符串
fake.pyint():随机整数

五.PS:

想了解Faker的更多用法,可以参考官方文档:

https://faker.readthedocs.io/en/master/index.htmlicon-default.png?t=LA92https://faker.readthedocs.io/en/master/index.html

小例子:生成随机的数据表信息

  • 注意:这里为了例子简便,对于数据库操作就直接使用“命令式”的了,而不使用ORM模型式的了。

一.实现过程:

  1. 利用pymysql连接数据库
  2. 创建表
  3. 利用fake格式化要插入的数据
  4. 利用pymysql执行插入语句

二.代码:

  • 第一次安装faker(C:\Users\lenovo>pip install faker)出错误,使用下面代码代替可安装成功!C:\Users\lenovo>python -m pip install --upgrade pip -i
  • https://pypi.douban.com/simple
  • 然后代码和图片如下:

 

C:\Users\lenovo>pip install faker
C:\Users\lenovo>python
>>> from faker import Faker
>>> faker=Faker('zh_CN')
>>> faker.name()
>>> faker.email()

from faker import Faker
fake = Faker('zh_CN')

#构造表
#创建表字段@Param createlist
#创建表字段名@Param createth
#创建条数@Param count

#构造用户信息
# createlist=["name","address","email","company","ipv4","phone_number","country"]
# createth=["姓名","地址","电子邮件","公司","IP地址","手机号码","国家"]
# count=10


createlist=["name","address","email","company","ipv4","phone_number","country"]
createth=["姓名","地址","电子邮件","公司","IP地址","手机号码","国家"]
count=1000


def createdatatxt(createlist,createth,count):
    varlist=[]
    arr=(len(createlist)+1)*count
    for _ in range(count):
        for item in createlist: 
            varlist.append(eval("fake."+item)())
        varlist.append("\n")

    f=open('testdata.txt', 'a+')    
    for i in range(len(createth)):
            f.write(createth[i]+"   ")
    f.write("\n")
    for i in range(arr):
            if varlist[i]=="\n":
                    f.write("\n")
            else:
                    f.write(varlist[i]+"    ")  
    f.close()

createdatatxt(createlist,createth,count)
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

  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

书启秋枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值