【问题标题】:Python unittest discovery with subfolders带有子文件夹的 Python 单元测试发现
【发布时间】:2012-10-01 13:22:52
【问题描述】:

我的 unittest 文件夹是这样组织的。

.
|-- import
|   |-- import.kc
|   |-- import.kh
|   `-- import_test.py
|-- module
|   |-- module.kc
|   |-- module.kh
|   `-- module_test.py
`-- test.py

我想简单地运行 test.py 以使用 unittest Python 模块运行我的每个 *_test.py

目前,我的 test.py 包含

#!/usr/bin/env python

import unittest

if __name__ == "__main__":
    suite = unittest.TestLoader().discover('.', pattern = "*_test.py")
    unittest.TextTestRunner(verbosity=2).run(suite)

python 文档说它应该自动在子文件夹中发现我的测试。但事实并非如此。

目前只输出

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK

我确定我的*_test.py 文件没有问题,因为当我将它们移动到根目录时,它可以正常工作.. 我做错了什么?

【问题讨论】:

    标签: python unit-testing


    【解决方案1】:

    importmodule 目录中添加__init__.py

    【讨论】:

    • 只需触摸__init__.py 文件即可,谢谢。你能解释一下为什么我必须这样做吗?还有另一种解决方案吗?因为我正在与其他人一起工作,我希望测试是最简单的创建方法。
    • 这是测试发现实现方式的产物。本质上,每个包含测试的目录都必须可以作为 Python 模块导入。请参阅docs 了解更多信息。
    • 来自documentation 说从3.4 起应该支持命名空间包,但我发现仍然需要__init__.py。为什么?
    • 挣扎了一段时间,直到我找到了这个。谢谢你。 Python 世界的另一个细微差别。
    【解决方案2】:

    如果可以切换,请考虑使用 nose 而不是原版的 unittest 模块。你不需要弄乱你自己的 test.py 文件或任何东西;运行nosetests 将找到并运行您的所有测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-05
      • 2020-09-05
      • 1970-01-01
      • 2011-03-18
      • 2021-02-26
      • 2010-11-22
      • 2018-09-25
      相关资源
      最近更新 更多