根据文档
tests_require是使用setuptools's test命令时获得的附加包。它们未安装在系统上。
extras_require 是按功能名称分组的可选附加包。安装软件包列表以使用该功能,并且有多种安装方法。见Does pip handle extras_requires from setuptools/distribute based sources?
我的解释
tests_require 应该是用于测试的包,例如numpy,而不是用于进行测试的包,例如pytest 或nose。在 setuptools 之外进行测试时,tests_require 需要移动或复制到 extras_require 中的“测试”功能。
使用 extras_require 使 pytest 等测试包成为可选。使用 setup_requires 来要求它。
pytest 和 nose 可以与 setuptools 集成以利用 tests_require 的便利性,但是,可能有缺点。 nose 警告通过 setuptools 运行时插件可能不可用。
见Integrating with setuptools / python setup.py test / pytest-runner
和nosetests setuptools command。
例如
使用 setuptools 集成进行测试:
setup.py
[...]
'version': '0.0.1',
'install_requires': [],
'tests_require': ['numpy'],
'cmdclass': {'test': PyTest},
'extras_require': {
'testing': ['pytest'],
},
[...]
嘘
(env) > python setup.py develop
(env) > easy_install pytest
(env) > python setup.py test -a "--pdb"
或者,在没有 setuptools 集成的情况下进行测试:
setup.py
[...]
'version': '0.0.1',
'install_requires': [],
'extras_require': {
'testing': ['pytest', 'numpy'],
},
[...]
嘘
(env) > pip install -e .[testing]
(env) > pytest.py --pdb