python setup.py test
.NET과 동등한 기능을 실행하는 방법을 알아 내려고 노력 중 python -m unittest discover
입니다. run_tests.py 스크립트를 사용하고 싶지 않고 외부 테스트 도구 ( nose
또는 같은 py.test
) 를 사용하고 싶지 않습니다 . 솔루션이 Python 2.7에서만 작동하면 괜찮습니다.
에서 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
있지만 .NET 만 사용하는 솔루션으로 이동하여이 문제를 제거 할 수 있기를 바랍니다 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)