提供自动生成内容的工具。

django-mockups的Python项目详细描述


此应用程序旨在提供一种简单的方法来加载随机生成的 测试数据到开发数据库中。您可以使用管理命令 通过命令行加载测试数据。

通常您通过管理员添加测试数据,以查看您的站点在非 静态页面。通过使用dumpdata将数据发送到 或者在你做一个manage.py reset app之前保存它 打开。你的站点变得越来越复杂,添加测试数据变得越来越复杂 更烦人。

在这种情况下,实体模型可以帮助您节省时间 实际上是花在黑客上的。

安装

必须在python路径上提供mockups包。或者 将其放入项目目录或从python包索引安装 使用pip install django-mockups

要使用管理命令,必须将'mockups'添加到 INSTALLED_APPS在django设置文件中设置。你不需要这么做 如果您只想将mockups包用作库,请执行此操作。

管理命令

mockups接受以下语法:

django-admin.py mockups [options] app.Model:# [app.Model:# ...]

几乎不言而喻。提供型号名称,前缀为其应用程序 名字。之后,放置一个冒号并告诉命令需要多少对象 创造。下面是一个如何创建三个类别和二十个类别的示例 您的博客应用程序条目:

django-admin.py mockups blog.Category:3 blog.Entry:20

喂!您已经准备好使用填充到数据库中的测试数据。这个 模型字段通过生成随机生成的值来填充数据 取决于字段的类型。例如,文本字段用lorem填充 ipsum dummies,日期字段中填充了从上一个 年份等

有一些命令行选项可用。主要是为了控制 相关字段的行为。如果foreingkey或多对多字段应该是 填充现有数据或是否生成相关模型 苍蝇。有关更多信息,请查看命令的帮助页 信息:

django-admin.py help mockups

将模型用作单元测试的工具

它证明了实体模型在单元测试中有很大的用途。它总是 我发现创建复杂的模型来测试他们的行为 很复杂。有时模型有严格的限制或许多相关对象 他们所依赖的。一个解决方案是使用传统的固定装置 从生产数据库中转储。但在开发数据库时 计划经常变化,很难维护所有的固定装置,也很难知道 转储文件中包含的对象等。

救援的模型!它允许您自动生成模型和所有 他们对飞行的依赖。看看下面的例子。

让我们从最基本的开始。我们为 Entrymodel并告诉它创建10个模型实例:

from mockups import Mockup
mockup = Mockup(Entry)
entries = mockup.create(10)

现在你可以到处玩和测试你的博客条目。默认依赖于 外键和多对多关系通过随机选择 已经存在的相关模型的对象。如果你还没有呢? 您可以提供generate_fk属性,该属性允许模型 通过生成新的相关模型来遵循foreignkeys的实例:

mockup = Mockup(Entry, generate_fk=True)

这将为Entryallforeignkey字段生成新实例。它的 可以将此行为限制为单个字段:

mockup = Mockup(Entry, generate_fk=['author'])

这只会自动创建新的作者,而不会影响其他作者 桌子。在多到多个字段中也可以这样做。但你需要 另外,请指定应为m2m关系创建多少对象:

mockup = Mockup(Entry, generate_m2m={'categories': (1,3)})

所有创建的条目模型都会分配一到三个新类别。

为字段设置自定义值

但是,通常需要确保特定字段必须具有 具体值。使用Factory

class PonyFactory(Factory):
    pub_date = generators.StaticGenerator(datetime(2010, 2, 1))

class PonyMockup(Mockup):
    factory = PonyFactory

mockup = PonyMockup(Entry)

更多

有很多东西可以探索,对你和你的 项目:

  • 有多种方法可以向模型注册自定义的Mockup子类 在模型上调用mockups时自动使用的。
  • 对相关模型的更多控制,即使是相关模型的关系… (例如,使用generate_fk=['author', 'author__user']
  • 用于确保创建的模型 有效的(例如uniqueunique_together约束 已默认处理)

我希望以后能在文档中详细解释这一点。它 将被书写但尚未完成。我想把这个项目推广到 支持你的发展。但是因为它是唯一的python代码,所以您可以很容易地学习 你自己的来源,看看它可以用什么方式。已经有了 一些文档中包含文档字符串的部分可能对您也有帮助。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
关于JSP转发的java问题   强制Oracle驱动程序向java输出带有时区的时间戳。sql。使用getObject时的时间戳   Java中的配置单元UDF在创建表时失败   eclipse怀疑Java上下文加载器使用不再存在的文件   范围如何为我没有在JavaEE中编写的类定义单例对象?   java Eclipse未启动:JVM已终止。退出代码=14   仅存在于子类中的属性的java别名(Hibernate标准)   Java字符串插入错误   无法打开java@PropertySource,因为它不存在   java从多项目Maven配置生成WAR文件   java Hibernate@Lob注释不再有效:不能用几个字符串超过CLOB的总长度?   java jbutton的鼠标侦听器包含if/else循环阻塞的jvm?   java如何删除最近24小时安卓的通话记录   java Android服务+计数器不工作   java如何获取返回结果的服务器的数据,我希望将该结果更新到另一台服务器   java从javax获得“一切”是可能的。命名。初始上下文?   java Spring云门请求超时不适用于路径   java web应用程序会话缓存   java使用dialogflow的响应通过google助手打开我的应用程序   MongoDB添加createAt updatedAt字段java