Django 中的 Fixtures

2024 年 8 月 29 日 | 4 分钟阅读

在本教程中,我们将讨论 Django 中的 Fixtures。 如果您正在使用 Django,pytest fixtures 可以帮助您为易于维护的模型编写测试。 编写准确的评估是成功应用程序的关键步骤,而 fixtures 是让您有效且强大地查看套件的关键部分。 fixture 是一小段数据,是测试的基础。 随着测试场景的变化,添加、更改和维护 fixtures 可能会很麻烦。 但不用担心。 本教程展示了如何使用 pytest-Django 插件轻松创建新的测试用例和 fixtures。

在 Django 中创建应用程序或项目时,您应该测试应用程序的功能。 最佳测试方法是使用对开发人员有意义的真实数据。 这样,您可以更好地了解应用程序的工作原理。 但是,从头开始构建应用程序会使数据很快变得不可用,并且数据库完全为空。 即使您有一个旧数据库,您也可能需要将数据传输到新数据库。 然后是“fixtures”。 fixture 是 Django 可以读取并加载到数据库中的数据集合。 您也可以使用或创建 fixtures 来存储现有数据。 Fixtures 基本上是 Django 如何将数据导出和导入到数据库中。 有一个包可以提供帮助,django-seed; 我想手动完成它,以了解它的工作原理,并为我的项目使用更相关的数据。

我们如何在 Django 中创建 Fixture?

Fixtures 可以放置在许多地方,但通常建议将它们放置在实用程序的 fixtures/ 目录中。 这将确保您的应用程序中的所有测试数据都是完整的,并且可以在您的发行版中运行。 下面描述的 loaddata 命令指定了可以放置 fixtures 以进行加载的位置。 在您了解如何使用工具之前,您需要了解如何创建它们。 Django 的相关文档非常出色。 如果您的应用程序数据库中有记录,则可以使用 ./manage.py dumpdata <app> 命令从数据库中的当前事实创建 fixtures。 请注意,您可以使用 --format 标签来指定输出格式,并使用 --indent 命令来优化输出。 推荐的命令是

这将创建一个非常易读的夹具,您稍后必须对其进行编辑。 在您的挑战目录中运行此命令,并在必要时替换应用程序。 如有必要,打开设备并查看内部。 这应该是数据库的 yaml 序列化、人类可读的版本。

我们如何测试我们的 Fixtures?

Django 还配备了非常好的工具来测试和更新您的 fixtures。 testserver 命令允许您在启动之前运行改进服务器并发送和加载 fixtures。 这样,任何 fixture 都可以在浏览器中运行代码库。 这听起来很不错,但此命令最好的地方在于,它允许您即使在关闭开发服务器后也保留数据库。 这表明您可以加载家具,在管理界面或前端对其进行编辑,然后终止服务器。 然后运行 dumpdata 来对抗该数据库以撤消更新的 fixtures。 非常简单。 请注意,通用数据库名称带有 test_ 前缀,因此不会覆盖常规数据库。 这就是我想从中获取数据的原因。 (您可能需要在 settings.py 文档中定义它以将其与 dumpdata 一起应用。这有点像黑客行为。可以完成一些事情来使其更容易)。

什么是 Django 的 Testcase?

正如预期的那样,单元测试 fixture 的情况要好得多。 但在解释如何在单元测试中使用 fixtures 之前,需要说明一些事情。 单元测试是一个可以像任何其他 Python 类一样进行子类化的类。 这意味着 Django 提供了他的 Testcase 类。 您可以从此类继承以获得 Django 提供的酷炫附加功能。 官方文档对此进行了很好的记录。 Django 测试用例具有配置 Test Client 和 URLConf 的部分。 这些用于测试视图,因此您可以安全地跳过它们。 现在相关的部分是 Fixture 加载和断言。 我们建议阅读整个测试文档。 它简短且包含有用的信息。 但是,了解所有可用的断言可以使测试更容易。

结论

因此,在本文中,我们讨论了 Django 中的 Fixtures。 您已有效地应用了一个 fixture 工厂,该工厂提供了 Django 版本实例。 我还维护并应用了 fixtures 之间的依赖关系,以使编写和维护评估更容易。


下一个主题Dokku Django