【Faker+xlsxwriter】生成测试数据并写入Excel

一、前言

  • 在工具开发、测试过程中,经常需要使用一些测试数据。手动制造数据的话,可能需要花费大量精力和工作量,并且容易出错,这是Faker可以帮助我们生成一些虚拟测试数据。
  • faker是一个开源的python库,安装完成后只需要调用Faker库,就可以帮助我们创建需要的数据。
  • 文档:https://faker.readthedocs.io/en/master/index.html#localization

二、Faker基本用法

这里主要生成中文测试数据,所以提供常见的方法示例是中文的。想要了解其他的,可以在官网点击其他语言 。
1.地址信息类:

fake.address() :完整地址,比如XX省XX市XX路XX号 
fake.street_address()  :街道+地址
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.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):多个随机段落

5、随机数字类

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

6、其他

fake.name():姓名  
fake.user_name(*args,**kwargs):用户名,只是随机的英文姓名组合,一般是6位
fake.phone_number():电话号码
fake.simple_profile(sex=None):简略个人信息,包括用户名,姓名,性别,地址,邮箱,出生日期。
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():工作

三、随机生成测试数据并写入Excel

from faker import Faker
import xlsxwriter


wb = xlsxwriter.Workbook('test.xlsx')  #创建一个新的工作簿对象
ws = wb.add_worksheet('Sheet1')
heading = ['Name', 'Job', 'City', 'Postcode', 'Word', 'Year']
my_bold = wb.add_format({'bold': True}) 
ws.write_row('A1', heading, my_bold)  # 表头加粗
ws.set_column(1, 3, 20)               # 设置第2至4列的宽度为20
ws.set_column(4, 4, 50)               # 设置第5列的宽度为30

a = 2
fake = Faker(locale='zh_CN')          # 指定中文语言和类型生成数据
for _ in range(30):
    name = fake.name()                #姓名
    job = fake.job()                  #工作
    city = fake.city()                #城市
    postcode = fake.postcode()        #邮编
    word = fake.sentence(nb_words=6, variable_nb_words=True, ext_word_list=None)                   #随机短语
    year = fake.year()                # 年份
##    print(f"Name: {name}, Job: {job}, city: {city}, postcode:{postcode}, word:{word},year: {year}")
    ws.write_row('A' + str(a), {name}) # 从第二行开始写入
    ws.write_row('B' + str(a), {job})
    ws.write_row('C' + str(a), {city})
    ws.write_row('D' + str(a), {postcode})
    ws.write_row('E' + str(a), {word})
    ws.write_row('F' + str(a), {year})
    a += 1

wb.close()

你可能感兴趣的:(python小技巧,python自动化办公,python)