にpython setup.py test
相当するものを実行する方法を理解しようとしていますpython -m unittest discover
。run_tests.pyスクリプトを使用したくないし、外部テストツール(nose
またはなどpy.test
)も使用したくない。ソリューションがPython2.7でのみ機能する場合は問題ありません。
で、configのフィールドやフィールドにsetup.py
何かを追加する必要があると思いますが、正しく機能する組み合わせが見つからないようです。test_suite
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)