提供自动生成内容的工具。
项目描述
此应用程序旨在提供一种简单的方法,将大量随机生成的测试数据加载到您的开发数据库中。您可以通过命令行使用管理命令来加载测试数据。
通常,您通过管理员添加测试数据以查看您的站点在没有静态页面的情况下看起来如何。您可以通过使用 dumpdata 导出数据以将其发送给同事或在进行 manage.py reset app 等操作之前保存它。您的网站变得越来越复杂,添加测试数据变得越来越烦人。
这是mockups可以帮助您节省时间,这些时间可以真正用于黑客攻击的用例。
安装
您必须使 mockups 包在您的Python路径中可用。您可以将它放入项目目录中或使用 pip install django-mockups 从Python包索引中安装它。
要使用管理命令,您必须在您的Django设置文件中将 'mockups' 添加到 INSTALLED_APPS 设置中。如果您只想将 mockups 包用作库,则不需要执行此操作。
管理命令
mockups接受以下语法
django-admin.py mockups [options] app.Model:# [app.Model:# ...]
几乎不言自明。提供模型的名称,前面加上其应用程序名称。之后,放置一个冒号,告诉命令您想要创建多少个对象。以下是一个如何为您博客应用程序创建三个类别和二十篇文章的示例
django-admin.py mockups blog.Category:3 blog.Entry:20
哇!您数据库中已经填充了可用的测试数据。模型字段通过生成随机值来填充,这些值取决于字段类型。例如,文本字段填充了Lorem ipsum占位符,日期字段填充了过去的随机日期等。
有一些命令行选项可供使用。主要是用于控制相关字段的操作。例如,外键字段或多对多字段是否应填充现有数据,或者是否在运行时生成相关模型。请查看命令的帮助页面以获取更多信息。
django-admin.py help mockups
使用模拟作为单元测试的工具
已经证明模拟在单元测试中有很大用途。创建复杂模型以测试其行为总是让我感到头疼。有时模型有严格的限制或许多依赖的其他对象。一种解决方案是使用从生产数据库中导出的传统固定数据。但是,在开发过程中,数据库模式经常变化,维护所有固定数据并确切知道哪些对象包含在导出中等都是非常困难的。
模拟来拯救!它允许您自动生成模型及其所有依赖项。
让我们从最基本开始。我们为Entry模型创建一个Mockup实例,并告诉它创建十个模型实例。
from mockups import Mockup mockup = Mockup(Entry) entries = mockup.create(10)
现在您可以随意测试您的博客条目。默认情况下,外键和多对多关系的依赖项通过随机选择相关模型的现有对象来解决。如果您还没有一个呢?您可以提供generate_fk属性,这允许模拟实例通过生成新相关模型来跟踪外键。
mockup = Mockup(Entry, generate_fk=True)
这为Entry的所有外键字段生成了新实例。您可以将此行为限制为单个字段。
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'])
用于确保创建的模型有效的自定义约束(例如,默认情况下已经处理的unique和unique_together约束)
我希望能通过更详细的文档来解释这一点。它将被编写,但尚未完成。我希望将这个项目发布出来,以支持您的发展。但由于它是Python代码,您可以轻松地自己研究源代码,并了解它可以以哪些方式使用。已经有一些部分使用文档字符串进行了注释,这可能对您也有帮助。
项目详细信息
django-mockups-0.4.8.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9949f0290bb5dba652742ef8359756f81a6438a407ba45eef623fb515d1147dd |
|
MD5 | ea5a636f527f35af4ae971769021038a |
|
BLAKE2b-256 | 88f4e19e3d2fcad9106f347eba02aa9a3b5ba1d15da0685fd2689d60203213f3 |