我试图弄清楚如何python setup.py test
运行python -m unittest discover
。我不想使用run_tests.py脚本,也不想使用任何外部测试工具(例如nose
或py.test
)。如果解决方案仅适用于python 2.7,就可以了。
在中setup.py
,我想我需要在config的test_suite
and和/或test_loader
字段中添加一些内容,但是我似乎找不到能正常工作的组合:
config = {
'name': name,
'version': version,
'url': url,
'test_suite': '???',
'test_loader': '???',
}
只能使用unittest
python 2.7内置的功能吗?
仅供参考,我的项目结构如下:
project/
package/
__init__.py
module.py
tests/
__init__.py
test_module.py
run_tests.py <- I want to delete this
setup.py
更新:这可能与unittest2
但我想只使用unittest
来自https://pypi.python.org/pypi/unittest2
unittest2包括一个非常基本的setuptools兼容测试收集器。在setup.py中指定test_suite ='unittest2.collector'。这将从包含setup.py的目录中的默认参数开始测试发现,因此,它可能是最有用的示例(请参阅unittest2 / collector.py)。
目前,我仅使用一个名为的脚本run_tests.py
,但希望通过移至仅使用的解决方案来摆脱这种情况python setup.py test
。
这是run_tests.py
我希望删除的:
import unittest
if __name__ == '__main__':
# use the default shared TestLoader instance
test_loader = unittest.defaultTestLoader
# use the basic test runner that outputs to sys.stderr
test_runner = unittest.TextTestRunner()
# automatically discover all tests in the current dir of the form test*.py
# NOTE: only works for python 2.7 and later
test_suite = test_loader.discover('.')
# run the test suite
test_runner.run(test_suite)