我应该如何测试数据库驱动的 Django CMS 是否出现 404 错误?

How should I test a database-driven Django CMS for 404 errors?

我在 Django 中设计了一个基本的内容管理系统,它使用数据库来跟踪 Article 对象,然后在我的网站上显示这些 Article 对象。

每篇文章都使用我经常更新的模板标签。有时,当我更新模板标签时,我会不小心破坏我网站上的一篇或多篇文章。例如,如果我更改给定文章引用的模板标签的必需参数,而忘记更新该文章中的模板标签代码,则该文章将中断,导致 404。

我想要一种简单的方法来确保我的所有文章页面在更新我的模板标签后仍然有效。不幸的是,据我所知,除了手动梳理它们之外,没有简单的测试方法来确保我的所有文章都提供 200 个状态代码。

我研究了 Django 测试框架,但它似乎不是解决我的问题的正确方法。要针对 404 自动测试我所有的文章,我需要在我的数据库中复制文章 table 并将其作为我的测试的夹具加载 — 和 .

在我对我的代码部署更改后,是否有一种简单的方法来测试我网站上所有文章的 404 错误?

这个问题比你上一个问题中给出的问题要简单得多。它有很多解决方案。

Google 网站站长工具

如果您不介意稍有延迟,可以使用 Google Webmaster Tools,它将报告其抓取工具检测到的所有 404 错误。

Django 测试用例

正是我在上一个问题中不愿意推荐的东西。为什么我现在建议呢?好吧,问题似乎更简单。您不需要实时数据库中的所有数据。因此,创建灯具变得更加容易和快捷。

您可能有一个用于备份的只读副本。如果您在只读副本上使用 -k 标志调用 ./manage.py test,您实际上可以进行大量测试。如果您的代码不使用任何手动事务,您可以做更多的事情。

scraping 框架

虽然并非专门为查找 404 错误而设计,但可以针对您的站点使用 web scraping 框架(例如 404)来检测内部和外部 404 错误。

python 请求

您可以编写一个 pytest 测试用例来读取您网站上的所有 URL 并使用 python 请求或任何其他 http api 来访问它们。通过不使用 Django 单元测试,您不必为必须设置测试数据库而烦恼。 pytest 可以要求直接从您的实时服务器中提取数据。

硒/Beautifullsoup

类似于上面的 scraping 框架。这也可以与 pytest 一起使用,这样您就不需要设置测试数据库。可以向主数据库上的测试用户帐户授予读取访问权限。