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

django-mockups-ng的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第三方库


热门话题
java从Aparabi线程返回   为什么这个正则表达式可以使用Java而不能使用Groovy   java密钥管理器连接早期刷新令牌   数组。lang.ArrayIndexOutofBounds异常:4   java嗅探访问的站点并保存到文件   java从一个特定子字符串后开始的字符串中获取两个双倍子字符串   JavaAndroid:SharedReferences。如何正确地实施它们   java通过Flatworm创建列表   java如何在TestNG框架中的@BeforeClass方法中使用数据驱动测试   java标题视图bug我不明白   Java中的Java解释器或编译器   java如何将一维索引转换为多维数组中的相应索引?   Java泛型警告。util。收藏   java JSP页面在不合适的地方创建JSESSIONID cookie   配置javaapachelog4jlog4j。xml配置多个错误   无法设置java EditText焦点   java将文本框的标签放在框的上方,而不是侧面   如何使用Java8处理可空列表?   java将3x3 2D数组插入9x9 2D数组