Python单元测试和发现

问题描述 投票:37回答:3

我有目录,其中包含类似文件的名称:test_foo.py

每个文件都是一个测试用例。

我想

1)从命令行在目录中运行所有测试。我正在使用unittest2,因为我们正在运行Python 2.5.1。从这些目录之一中,我尝试在命令行中键入以下内容:

python -m unittest2 discover -p 'test_*.py'

和几种不同的变体。我没有错误,但是什么也没发生。我期望该目录中所有测试用例中的所有测试都能运行并获得结果。

2)我也尝试在执行此操作的目录中包含一个脚本:

loader = unittest2.TestLoader()
t = loader.discover('.')

如果我打印t变量,我可以看到我的测试用例,但是从文档中,我一经发现就无法弄清楚如何处理加载程序对象。

python unit-testing discovery
3个回答
56
投票

运行python -m unittest discover时遇到了相同的问题。这是一个很好的检查清单,用于验证您的设置。 Nose在允许的配置下更灵活,但不一定更好。

  1. 确保所有文件/目录均以test开头。不要使用test-something.py,因为这不是有效的python模块名称。使用test_something.py

  2. 如果要将测试放在子目录(例如test/)中,请确保创建了test/__init__.py文件,以便python将目录视为一个包。
  3. 所有类测试用例定义必须扩展为unittest.TestCase。例如
  4. class DataFormatTests(unittest.TestCase)


47
投票
一旦发现测试,就可以通过测试运行程序运行它们。

24
投票
[鉴于您打算如何在Python unittest2的命令行上使用< 2.7,我想您可能错过了the note on the unittest2 PyPI page
© www.soinside.com 2019 - 2024. All rights reserved.