1. 库和版本:
    Faker==2.0.0
    factory-boy==2.12.0
  2.  
  3. 官方文档:
    https://factoryboy.readthedocs.io/en/latest/index.html

1. 新建两个object:User和School

user.py

  1. class User():
  2. def __init__(self, name, num, age, school, city, phone):
  3. self.name, self.num, self.age, self.school, self.city, self.phone = \
  4. name, num, age, school, city, phone

school.py

  1. class School:
  2. def __init__(self,schoolName):
  3. self.schoolName=schoolName

2. 给对象创建factory

  1. import factory
  2. import factory.fuzzy
  3. from demo_factory_boy.fbobject.user import User
  4. from demo_factory_boy.fbobject.school import School
  5. from demo_factory_boy.fbprivader.numpv import NumProvider
  6.  
  7. factory.Faker.add_provider(NumProvider) #添加自定义的NumProvider
  8.  
  9. class SchoolFactory(factory.Factory):
  10. class Meta:
  11. model = School
  12.  
  13. schoolName = factory.sequence(lambda n: 'school%04d' % n)#factory.sequence
  14.  
  15. class UserFactory(factory.Factory):
  16. class Meta:
  17. model = User
  18.  
  19. name = factory.Faker("name", locale="zh_CN")#factory.Faker
  20. num = factory.Faker("num")
  21. age = factory.fuzzy.FuzzyInteger(42)#factory.fuzzy.FuzzyInteger
  22. city = factory.Faker("address", locale="zh_CN")
  23. phone = factory.fuzzy.FuzzyText("", 7, "", "")#factory.fuzzy.FuzzyText
  24. school = factory.SubFactory(SchoolFactory)#factory.SubFactory
  25.  
  26. class Params:
  27. shipped = factory.Trait(
  28. name=None
  29. )

3.编写自定义Provider(如果没有Provider需求,可以跳过这个步骤

  1. from faker import Faker
  2. from faker.providers import BaseProvider
  3. import random
  4.  
  5. fake = Faker()
  6.  
  7. class NumProvider(BaseProvider):
  8. def num(self):
  9. ri = self.randomInt()
  10. return str(ri())
  11.  
  12. def randomInt(self):
  13. return lambda a=1,b=30:random.randint(a,b)
  14.  
  15. def randomStr18(self,num):
  16. ri = lambda a=0, b=9: random.randint(a, b)
  17. s = ''
  18. for i in range(18):
  19. s = s + str(ri())
  20. return s

4.使用

  1. import factory
  2. from demo_factory_boy.fbfactory.userfc import UserFactory
  3.  
  4. if __name__ == "__main__":
  5. # 单个生成
  6. seq = []
  7. uf = UserFactory()
  8. print(uf.__dict__)
  9. seq.append(uf.__dict__)
  10. seq.append(UserFactory().__dict__)
  11. print(seq)
  12.  
  13. ##批量生成
  14. list = []
  15. fss = factory.build_batch(UserFactory, 4)
  16. for fs in fss:
  17. list.append(fs.__dict__)
  18. print(list)
  19. ##部分字段修改
  20. uff = UserFactory(shipped=True)
  21. print(uff.school.__dict__)
  22. print(uff.__dict__)
  23. print(uff.__dir__())

结果:

利用Factory-boy来生成实例数据的更多相关文章

  1. C# 利用Newtonsoft.Json 序列化生成Json数据

    现在需要将一些数据转化成json格式返回给调用者, 使用Newtonsoft.Json.DLL库来帮助我们序列化 举例: {"300033":{"MC":&qu ...

  2. 利用TPC-H为MYSQL生成数据

    ## 利用TPC-H为MYSQL生成数据 导言 这篇文章是看了joyee写的TPC-H数据导入MySQL教程以及另一篇网上的MySQL TPCH测试工具简要手册 后写的,有些内容是完全转载自以上两篇文 ...

  3. 利用Java随机,生成随机学生数据

    为模拟向数据库中大量插入学生数据(注:此处应该用PreparedStatement.batchUpdate等批处理提高效率)的情形,通过Java随机来生成学生数据. 一.要生成的学生数据 studen ...

  4. 利用ForgeryPy生成虚拟数据

    在程序研发过程中,我们往往需要大量的虚拟实验数据.Python中有多个包可以用于生成虚拟数据,其中功能较为完善的是ForgeryPy. 1 安装 采用pip进行安装: pip install Forg ...

  5. [20170623]利用传输表空间恢复部分数据.txt

    [20170623]利用传输表空间恢复部分数据.txt --//昨天我测试使用传输表空间+dblink,上午补充测试发现表空间设置只读才能执行impdp导入原数据,这个也很好理解.--//这样的操作模 ...

  6. python 全栈开发,Day94(Promise,箭头函数,Django REST framework,生成json数据三种方式,serializers,Postman使用,外部python脚本调用django)

    昨日内容回顾 1. 内容回顾 1. VueX VueX分三部分 1. state 2. mutations 3. actions 存放数据 修改数据的唯一方式 异步操作 修改state中数据的步骤: ...

  7. C#利用WMI获取 远程计算机硬盘数据

    一.利用WMI获取 远程计算机硬盘数据,先引入"System.Management.dll"文件. /// <summary>        /// 获取存储服务器硬盘 ...

  8. 简单利用XSS获取Cookie信息实例演示

    简单利用XSS获取Cookie信息实例演示   首先要找到一个有XXS的站,这里就不整什么大站了,谷歌一下inurl:'Product.asp?BigClassName',搜出来的命中率也比较高.随便 ...

  9. faker生成器生成虚拟数据的Python模块

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:行哥 今天给大家介绍一个Faker模块,一款基于Python的测试数 ...

随机推荐

  1. utils03_clone远程仓库

    1.Bash here 克隆方式 复制要克隆远程仓库的SSH或者HTTPS 使用Bash here克隆文件 2.使用git同步

  2. 如何设置td中溢出内容的隐藏显示

    <style type="text/css"> table { table-layout:fixed; } td { overflow:hidden; word-bre ...

  3. bootstrap面包屑在ie8下显示重叠,鼠标点击显示效果正常

    ie8下加载后的显示 点击之后的显示 主要是li标签宽度auto引起的,可以设置li标签的最小宽度 <ol class="breadcrumb"> <li id= ...

  4. 安卓手机--键盘谈起后 fixed背景图片被键盘顶起的问题

    参考文章: vue写法: <div class="main" :style="{ height: bodyHeight + 'px' }"> < ...

  5. Java学习记录--ModelMapper的使用

    在项目中很多时候需要把Model和DTO两个模型类来回转换,保证Model对外是隐私的,同时类似密码之类的属性也能很好地避免暴露在外了. 那么ModelMapper就是为了方便转换而实现的一个类库,下 ...

  6. pip安装requests报错unicodeEncodeError:'ascii' codec can\t encode charactesers in position 9-12:ordinal not in range(128)

    前提 : 已经安装pip(pip的安装我参考的是本博客转载脚本之家的步骤,实验可以成功) 1. 在cmd输入命令转到pip安装目录: 2. 运行后出现错误 3. 步骤2中的错误应该和编码有关.搜索百度 ...

  7. 一、初识asyncio协程

    初识asyncio协程 一.基本概念 ​ 要想了解学习协程相关知识要先对以下几个概念先行了解: 阻塞 ​ 阻塞状态是指程序未得到某所需计算资源时的挂起状态,简单说就是程序在等待某个操作未执行完前无法执 ...

  8. 解决CSocket高数据传输问题

    这个是自己项目中发现的问题,所以这个不一定适用于你的. 仅供参考. 头文件: ESSocket.h // ESSocket.h : header file // #ifndef ESSOCKET_H ...

  9. Django项目:CRM(客户关系管理系统)--49--40PerfectCRM实现全局账号注册+验证码+页面刷新保留信息

    # gbacc_urls.py # ————————38PerfectCRM实现全局账号登录注销———————— from django.conf.urls import url from gbacc ...

  10. LUOGU P4095 [HEOI2013]Eden 的新背包问题

    题目描述 " 寄 没 有 地 址 的 信 ,这 样 的 情 绪 有 种 距 离 ,你 放 着 谁 的 歌 曲 ,是 怎 样 的 心 情 . 能 不 能 说 给 我 听 ." 失忆的 ...