【问题标题】:How to test Django custom model fields?如何测试 Django 自定义模型字段?
【发布时间】:2012-03-17 09:26:21
【问题描述】:

我正在考虑创建一些subclassed Django model fields 并将它们作为一个包分发到PyPI。我喜欢为我的代码编写单元测试(à la TDD),但我对如何为这个特定的库编写测试感到有些困惑。

我想到的第一个想法是创建一个使用我的子类并只使用Django test tools 的 Django 项目,但这似乎一点也不优雅。一定有更好的方法!

有没有一种方法可以为这种类型的事情引导 Django?我很感激有人指出我正确的方向。谢谢!

【问题讨论】:

  • 为什么一定要有“更好的方法”?在我看来,如果您正在为 Django 编写库,那么使用 Django 的测试接口非常有意义。
  • @ChrisPratt 它涉及编写很多 代码,这些代码与测试库 无关。 Django 项目本身通常需要单元测试,所以如果我采用这种方法,我可能最终会在本质上为我的单元测试编写单元测试。不理想!
  • 不,你不会。您不必测试任何不在您的应用程序中的内容。 Django 对它的所有东西都有自己的测试。只需测试您的应用程序的独特之处,并依靠 Django 的东西来“正常工作”。确保这一点不是您的责任。
  • 您将在 Django 应用程序中创建它... 天哪,这一切都是语义,但 Django 的测试基础设施并没有什么特别之处。它只是 unittest2 和一些插件,使测试 Django 的东西更容易。如果您正在为 Django 编写一些东西,您可以假设 Django 是可用的,因此使用添加的内容。当然,您总是可以直接导入 unittest2,但测试的工作方式都一样。
  • @ChrisPratt 也许我们正在争论语义,但你不能假设我对 Django 的内部了解得足够多(我不知道!)。基本上我不想仅仅为了一个测试套件而包含一个manage.py、urls.py、settings.py。只是似乎没有必要。我的问题是这是否可能。我不在乎你是否称它为 Django 应用程序。我也不知道你为什么要让我这么难,而 3 小时前 lazerscience 已经给了我一个更有帮助的答案。

标签: django unit-testing django-models subclass


【解决方案1】:

Django 本身带有一些字段子类化测试;测试有自己的models.py,其中使用了自定义字段。当您亲自查看actual code 时,您应该会得到最好的印象!

补充:要让 django 发现您的 test 包中定义的模型,您必须将您的 yourapp.test 包添加到 INSTALLED_APPS。 Django 本身有a built-in mechanism 用于自动发现自己的测试并将其添加到INSTALLED_APPS

【讨论】:

  • 很确定这正是我正在寻找的。确认后我会尝试并接受您的回答。谢谢!
  • 抱歉,我花了这么长时间才回到这个问题上。暂时我几乎对 Django 失去了兴趣,但我至少想快速尝试一下。原来我不认为我可以完成我想要的。为了创建一个子类字段,我确实需要一个完整的 Django 项目。否则,没有设置字段知道保存到哪里等!无论如何,这与我得到的答案一样接近,所以我将其标记为这样。
  • 仅供参考,“实际代码”所指的链接已移动;看来现在可以在github.com/django/django/blob/master/tests/field_subclassing/…找到它。
猜你喜欢
  • 2021-12-18
  • 1970-01-01
  • 2012-12-11
  • 2015-04-16
  • 2022-01-24
  • 1970-01-01
  • 2019-09-06
  • 2017-03-05
  • 1970-01-01
相关资源
最近更新 更多