码迷,mamicode.com
首页 > 编程语言 > 详细

Python Faker随机生成测试数据(干货)

时间:2020-07-04 20:33:02      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:繁体   ima   tail   压力测试   dex   控制   apt   col   导数   

前言

 

  Faker是一个Python软件包,可为您生成伪造数据。无论您是需要引导数据库,创建美观的XML文档,

填充持久性以进行压力测试还是匿名化来自生产服务的数据,Faker都是您的理想之选。不论您这边需要创建多少条数据,无非是一个for循环就解决问题了。

 

基本用法

 

用pip安装:pip install Faker

官方文档:

Welcome to Faker’s documentation!?faker.readthedocs.io

github地址:

点?(^_-)的人还真不少哦,值得学习呀!

技术图片joke2k/faker?github.com技术图片

 

api介绍

我们可以用dir(fake)查看一下,它能fake近300种东西出来,并且faker还支持上几十种语言简直不能太强大。

dir(fake)

技术图片

我们常用语种

en_GB-英语(英国)zh_CN-英语(美国)ja_JP-日语 ko_KR-韩文 ru_RU-俄语 fr_FR-法语 zh_CN-中文(中国)zh_TW-中文(繁体)

常用的方法分类

  • address 地址
  • person 人物类:性别、姓名等
  • barcode 条码类
  • color 颜色类
  • company 公司类:公司名、公司email、公司名前缀等
  • credit_card 银行卡类:卡号、有效期、类型等
  • currency 货币
  • date_time 时间日期类:日期、年、月等
  • file 文件类:文件名、文件类型、文件扩展名等
  • internet 互联网类
  • job 工作
  • lorem 乱数假文
  • misc 杂项类
  • phone_number 手机号码类:手机号、运营商号段
  • python python数据
  • profile 人物描述信息:姓名、性别、地址、公司等
  • ssn 社会安全码(身份证号码)
  • user_agent 用户代理
fake.country() # 国家
fake.city() # 城市
fake.city_suffix() # 城市的后缀,中文是:市或县‘市‘
fake.name() # 姓名
fake.last_name() # 姓
fake.ean8() # 8位条码
fake.ean13() # 13位条码

 

faker函数太多了,我就不依依介绍了,有兴趣的看下看

faker常用函数:参考:

 

简单的实例

没错短短三行代码就实现随机创建数据

from faker import Faker
fake = Faker(zh_CN)   //设置语种
fake.name()
 

技术图片

 

批量创建数据

小编这里写了4个场景来批处理数据并且保存

  • 100条数据写入txt
  • 100条数据如excel
  • 100条数据写入mongodb数据库
  • 100条数据写入mysql数据库

话不多少,这接撸代码。

执行下面代码生成txt、excel、mongodb、mysql数据

"""
 * Create by dell on 2020/6/11
 * Author :wencheng
 * 微信公众 :自动化测试 To share

"""

from faker import Faker
import pandas as pd
from urllib import parse
from pymongo import MongoClient
import pymysql


class Create_Data(object):
    def __init__(self):
        # 选择中文
        fake = Faker(zh_CN)
        # 生成数据改变循环体来控制数据量rang(?)
        self.data_total = [
            [fake.name(), fake.job(), fake.company(), fake.phone_number(), fake.company_email(), fake.address(),
             fake.date_time(tzinfo=None)] for x in range(100)] 
        print(self.data_total)

    # 写入excel
    def deal_excel(self):
        df = pd.DataFrame(self.data_total,
                          columns=[name, job, company, phone_number, company_email, address, date_time])
        # 保存到本地excel
        df.to_excel("data_total.xlsx", index=False)
        print("Processing completed to excel")

    # 写入txt
    def deal_txt(self):
        with open(data_total.txt, w, errors=ignore, encoding=utf-8) as output:
            output.write(name,job,company,phone_number.company_email.address.date_time\n)
            for row in self.data_total:
                rowtxt = {},{},{},{}.format(row[0], row[1], row[2], row[3])
                output.write(rowtxt)
                output.write(\n)
            output.close()
        print("Processing completed to txt")

    # 写入mongodb
    def deal_mongodb(self):
        port = 27017
        host = localhost
        user_name = root
        db_name = data
        passwd = root
        passwd = parse.quote(passwd)
        mango_uri = mongodb://%s:%s@%s:%s/%s % (user_name, passwd, host, port, db_name)  # 链接时需要指定数据库
        conn = MongoClient(mango_uri)  # 创建链接
        db = conn[db_name]  # 连接coder数据库
        mongodata = db[data_total]
        for val in self.data_total:
            mongodata.insert(
                {"name": val[0], job: val[1], company: val[2], phone_number: val[3], "company_email": val[4],
                 address: val[5], date_time: val[6]})
        print("Processing completed to mongodb")

    # 写入mysql
    def deal_mysql(self):
        # 打开数据库连接
        db = pymysql.connect("localhost", "root", "root", "test2")
        # 使用cursor()方法获取操作游标
        cursor = db.cursor()
        # SQL 插入语句
        for val in self.data_total:
            sql = "insert into data_total(name,job,company,phone_number,company_email,address,date_time)value (‘%s‘,‘%s‘,‘%s‘,‘%s‘,‘%s‘,‘%s‘,‘%s‘)" % (
                val[0], val[1], val[2], val[3], val[4], val[5], val[6])
            try:
                # 执行sql语句
                cursor.execute(sql)
                # 执行sql语句
                db.commit()
                print("insert ok")
            except:
                # 发生错误时回滚
                db.rollback()
            # 关闭数据库连接


if __name__ == __main__:
    data = Create_Data()
    data.deal_excel()
    data.deal_txt()
    data.deal_mongodb()
    data.deal_mysql()

 

 

生成100条数据写入txt

技术图片

生成100条数据写入excel

技术图片

生成100条数据写入mongodb数据库

技术图片

生成100条数据写入mysql数据库

技术图片

 

 

就这么简单的几十行代码,可以随机生成我们需要的测试数据。

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家的支持。

更多文章关注小编公众号:自动化测试 To share

 

Python Faker随机生成测试数据(干货)

标签:繁体   ima   tail   压力测试   dex   控制   apt   col   导数   

原文地址:https://www.cnblogs.com/wen-cheng/p/13236288.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!