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

本文内容:

 

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

 

 

首发日期:2018-06-15

faker介绍:

 

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

 

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

faker的使用:

 

1.安装模块

 
 

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

 

2.导入模块

 
 

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

image

 

3.使用步骤:

 

  • 3.1初始化:
     
       
  • 3.2.调用方法:
    • 利用Faker对象调用方法,调用方法的返回值就是随机的数据。
    • 不同的数据需要调用不同的方法,常见方法参见下面。

 

 
 

 

 

 

常用方法:

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.name():姓名

  •  
  •  
  •  
  • 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:

 
 

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

 

注意:这里为了例子简便,对于数据库操作就直接使用“命令式”的了,而不使用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

 

 

 

转载于:https://www.cnblogs.com/progor/p/9188683.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好,感谢您的问题。 您可以使用 Python 库 faker 来生成测试数据。 下面是一个示例代码,可以生成一个包含 10 行、4 列的表格,每列的数据分别是: - 姓名(name) - 年龄(age) - 性别(gender) - 电子邮箱(email) 首先,需要安装 faker 库: ``` pip install faker ``` 然后,在代码中导入 faker 库: ```python from faker import Faker ``` 接着,创建一个 Faker 对象,并设置其使用的语言为中文: ```python fake = Faker(locale='zh_CN') ``` 接下来,我们可以使用 Faker 对象的方法来生成测试数据。例如,可以使用 `fake.name()` 方法生成姓名,使用 `fake.random_int()` 方法生成年龄,使用 `fake.random_elements()` 方法生成性别,使用 `fake.email()` 方法生成电子邮箱。 最后,我们可以将生成数据保存到一个列表中,并使用循环打印出来。 完整的代码如下: ```python from faker import Faker fake = Faker(locale='zh_CN') # 创建一个列表,用于保存生成测试数据 data = [] # 使用循环生成 10 行数据 for i in range(10): # 使用 faker 的方法生成测试数据 name = fake.name() age = fake.random_int(min=18, max=100) gender = fake.random_elements ### 回答2: 使用faker库生成测试数据python代码示例如下: ```python from faker import Faker import random fake = Faker(locale='zh_CN') # 生成姓名 def generate_name(): return fake.name() # 生成手机号码 def generate_phone_number(): return fake.phone_number() # 生成地址 def generate_address(): return fake.address() # 生成生日 def generate_birthday(): return fake.date_of_birth().strftime('%Y-%m-%d') # 生成学历 def generate_education(): education_list = ['本科', '硕士', '博士', '大专', '高中', '初中', '小学'] return random.choice(education_list) # 生成表的测试数据 def generate_table_data(number_of_records): table_data = [] for _ in range(number_of_records): name = generate_name() phone_number = generate_phone_number() address = generate_address() birthday = generate_birthday() education = generate_education() record = { '姓名': name, '手机号码': phone_number, '地址': address, '生日': birthday, '学历': education } table_data.append(record) return table_data # 生成10条表的测试数据 table_data = generate_table_data(10) for record in table_data: print(record) ``` 以上代码使用faker库生成随机的中文姓名、手机号码、地址、生日和学历。在生成表的测试数据时,可以自定义生成的记录数目。代码会打印出生成的10条表的测试数据。 ### 回答3: 首先,你需要安装`Faker`模块。可以通过运行`pip install Faker`来安装。 下面是一个示例的Python代码,使用`Faker`库来生成上述表的测试数据: ```python from faker import Faker import random # 创建一个Faker对象 fake = Faker('zh_CN') # 生成用户数据 def generate_users(num_users): users = [] for _ in range(num_users): user = { 'id': fake.random_int(min=1), 'name': fake.name(), 'email': fake.email(), 'phone': fake.phone_number(), 'address': fake.address(), 'birthdate': fake.date_of_birth().strftime('%Y-%m-%d'), 'is_active': random.choice([True, False]) } users.append(user) return users # 生成产品数据 def generate_products(num_products): products = [] for _ in range(num_products): product = { 'id': fake.random_int(min=1), 'name': fake.word(), 'description': fake.text(), 'price': fake.pydecimal(left_digits=3, right_digits=2), 'quantity': fake.random_int(min=1, max=100) } products.append(product) return products # 生成订单数据 def generate_orders(users, products, num_orders): orders = [] for _ in range(num_orders): order = { 'id': fake.random_int(min=1), 'user_id': random.choice(users)['id'], 'product_id': random.choice(products)['id'], 'quantity': fake.random_int(min=1, max=5), 'order_date': fake.date_this_decade().strftime('%Y-%m-%d') } orders.append(order) return orders # 生成用户数据 users = generate_users(10) # 生成产品数据 products = generate_products(10) # 生成订单数据 orders = generate_orders(users, products, 20) # 打印测试数据 print('用户数据:') for user in users: print(user) print('产品数据:') for product in products: print(product) print('订单数据:') for order in orders: print(order) ``` 上述代码使用了`Faker`库中的一些常用方法,如`name()`生成姓名、`email()`生成邮箱地址、`phone_number()`生成电话号码、`address()`生成地址、`date_of_birth()`生成生日、`random_int()`生成随机整数等等。你可以根据需要自定义字段或数据类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值