Diango教程-Django中的数据夹具
在本教程中,我们将讨论Django中的数据夹具(fixtures)。如果您正在使用Django,pytest夹具可以帮助您编写对模型进行测试的测试,这样的测试易于维护。编写准确的测试是成功应用的关键步骤,而夹具是使您能够高效、有力地查看测试套件的关键部分。夹具是测试的基础数据。随着测试场景的变化,添加、更改和维护夹具可能会很繁琐。但是不用担心。本教程将展示如何使用pytest-Django插件轻松创建新的测试用例和夹具。
当在Django中创建应用程序或项目时,您应该测试应用程序的功能。最好的测试方法是使用对开发者有意义的真实数据。这样,您可以更好地理解应用程序的工作原理。然而,从头开始构建应用程序会使数据很快变得不可用,数据库完全为空。即使您有一个旧的数据库,您可能也需要将数据转移到新的数据库。然后就是"fixtures"。夹具是Django可以读取并加载到数据库中的数据集合。您还可以使用或创建夹具来存储现有数据。夹具基本上是Django将数据导出和导入到数据库的方式。有一个可以帮助完成这个工作的软件包,叫做django-seed;我想手动完成这个过程,以了解它的工作原理,并为我的项目使用更相关的数据。
如何在Django中创建夹具?
夹具可以放置在多个位置,但通常建议将它们放在您的应用程序的fixtures/目录中。这将确保您应用程序中的所有测试数据都完整且可以在分发时运行。下面将介绍loaddata命令,它指定了夹具的位置以供加载。在理解如何使用夹具之前,您需要了解如何创建夹具。Django的文档对此有很好的说明。如果您的应用程序中有数据库中的记录,可以使用./manage.py dumpdata <app>命令从数据库中的当前数据创建夹具。请注意,您可以使用--format标志来指定输出格式,使用--indent命令来改进输出。推荐的命令是:
./manage.py dumpdata APP --format=yaml --indent=6 > APP/fixtures/APP.yaml
这将创建一个非常易于阅读的夹具,稍后您可以对其进行编辑。在项目目录上运行此命令,必要时替换app。如果需要,打开夹具文件进行查看。这应该是一个YAML序列化的、易于阅读的数据库版本。
如何测试我们的夹具?
Django还提供了非常好的工具来测试和更新夹具。testserver命令允许您在启动前运行改进服务器,并发送和加载夹具。这样,任何夹具都可以在浏览器中运行代码库。这听起来很好,但这个命令的最好之处在于,即使在关闭开发服务器后,您仍然可以保留数据库。这意味着您可以加载夹具,然后在管理界面或前端对其进行编辑,然后停止服务器。然后运行dumpdata命令来还原更新后的夹具。非常简单。请注意,常规数据库名称前缀为test_,以防止覆盖常规数据库。这就是我要获取数据的方式。(您可能需要在settings.py文件中定义它以与dumpdata一起使用。这有点小技巧,但可以做些事情使其更容易)。
什么是Django的TestCase?
预期的单元测试夹具故事要好得多。但在解释如何在单元测试中使用夹具之前,还需要说一些事情。单元测试是一个类,可以像其他Python类一样被继承。这意味着Django提供了他的TestCase类。您可以继承自这个类来获得Django的一些很酷的附加功能。官方文档对此有很好的说明。Django测试用例有配置测试客户端和URLConf的部分。这些用于测试视图,所以您可以安全地跳过它们。现在相关的部分是Fixture加载和断言。我们建议阅读整个测试文档。它简短且充满了有用的信息。然而,了解所有可用的断言会使测试更容易。
结论
在本文中,我们讨论了Django中的数据夹具(fixtures)。您已经成功应用了一个夹具工厂,它提供了Django版本实例。我还维护并应用了夹具之间的依赖关系,以使编写和维护测试更加容易。