python - 如何以比应用程序更高的粒度在 Django 中对单元测试进行分组?

标签 python django unit-testing

在 Django 项目中,单元测试通常按应用程序组织,Django 提供了一种工具来运行所有测试、单个应用程序的测试、单个测试用例或单个测试方法。

然而,我发现单个应用程序中的测试用例通常属于单独的逻辑组或集群,并且仅能够运行单个测试组通常很有用。想象一下,例如:

  • 我有几个测试用例,每个测试用例都涵盖单个模型的不同配置,我想在开发模型时运行所有这些(并且只运行它们)。 (这特别麻烦,因为这样做的成本最低的方法是将测试用例集中在一起,所以现在您只有一个可以轻松运行的测试用例,但阅读和维护起来却是一场噩梦)。
  • 我有一系列实用程序类,它们的测试速度非常快,因为它们不会访问数据库。在重构这些时,我不需要运行模型测试和查看测试。

我四处寻找。但是,虽然将测试拆分为多个文件相对简单(参见示例 these two 问题),但似乎没有一种直接的方法来单独运行测试组。

那么,我是不是漏掉了什么?分组测试的秘诀是什么?

最佳答案

对于解决此问题的一种方法,值得一看 python 的 nose 测试框架。

具体来说,您可以标记测试或在其上设置属性。然后只运行带有一个或多个给定标签的测试子集(跨应用程序或整个项目)。

https://nose.readthedocs.org/en/latest/plugins/attrib.html?highlight=tags

请注意,nose extends unittest,因此您现有的 django unittest 套件可能已经与 nose runner 一起运行。

关于python - 如何以比应用程序更高的粒度在 Django 中对单元测试进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6510680/

相关文章:

java - 从 Python 使用 Java 程序

django - 在 Gunicorn 超时时转储 Django 堆栈跟踪

python - 扩展 django-import-export 的导入表单以指定每个导入行的固定值

python - 加载 MySQLdb 模块时出错 : No module named 'MySQLdb'

android - 如果手机和平板电脑上的行为不同,如何编写单元测试?

objective-c - 在终端中使用模拟器进行 OCUnit 应用程序测试

java - 如果 TestNG @BeforeClass 不是直接父类,则不会从父类(super class)运行

python - 使用属性时正确处理 __getattr__ 中的 AttributeError

python - kubernetes python 客户端中的 kubectl cp

python - python中有没有 "green"库用于读取图像并获取RGB值?