【问题标题】:Running Python Tests from Subpackages从子包运行 Python 测试
【发布时间】:2025-12-13 15:55:02
【问题描述】:

我有一个包 - 我们将有创意并称之为 package - 其中有 apidashboard 包,每个包都有一个 tests 模块和各种包含测试的文件。

我正在使用 Django 测试运行程序,而不是在我的运行配置中使用 package.api.testspackage.dashboard.tests,我只想使用 package.tests 并让它运行它下面的包中的所有测试。

我在 package 中添加了一个 tests 包,并在 init 中尝试了一些类似 from package.api.tests import * 或使用 all 声明的东西,但没有工作。

有没有办法做到这一点?这不是世界上最烦人的事情,但它是我们所做的每个项目中引入的一个包,并且有“运行 package.tests”的说明会更简单一些,特别是如果我们最终添加更多api 和仪表板之外的包。

【问题讨论】:

  • 这有帮助吗? *.com/a/20932450/6505847
  • 这确实帮助我解锁了一些方法。我使用的是目录而不是模块名称,因此测试运行程序会在该目录中找到所有内容。完全不用担心包裹。我还意识到from package.api.tests import * 不起作用,因为我在那里的测试也拆分成单独的文件,所以我可以从每个测试文件中导入 *,或者使用我使用的 all目录方法,因为它更简单。欣赏轻推。把它变成答案是否公平,我可以标记为正确?

标签: python django


【解决方案1】:

从 Django 1.6 版本开始,你可以:

具有匹配模式test*.py 的测试文件。因此,您可以拥有app/tests/test_models.pyapp/tests/test_views.py 形式的测试文件。

您还可以创建一个名为 app/tests/test.py 的文件并包含您的 那里的其他文件。问题是跑步者会寻找 匹配模式test*.py的文件并执行它们。

正如您所提到的,from package.api.tests import * 不会起作用,因为测试函数可能会被拆分为许多不同的文件。因此在这种情况下执行import * 或使用全导入方法是合理的。

【讨论】: