Ich versuche herauszufinden, wie ich python setup.py testdas Äquivalent von ausführen kann python -m unittest discover. Ich möchte kein Skript run_tests.py verwenden und keine externen Testtools (wie noseoder py.test) verwenden. Es ist in Ordnung, wenn die Lösung nur unter Python 2.7 funktioniert.
In setup.py, ich glaube ich etwas zu den hinzufügen müssen test_suiteund / oder test_loaderFelder in Config, aber ich kann scheinen nicht eine Kombination zu finden , die richtig funktioniert:
config = {
'name': name,
'version': version,
'url': url,
'test_suite': '???',
'test_loader': '???',
}
Ist dies nur unittestmit Python 2.7 möglich?
Zu Ihrer Information, meine Projektstruktur sieht folgendermaßen aus:
project/
package/
__init__.py
module.py
tests/
__init__.py
test_module.py
run_tests.py <- I want to delete this
setup.py
Update : Dies ist möglich mit, unittest2aber ich möchte etwas Äquivalentes nur mit findenunittest
Von https://pypi.python.org/pypi/unittest2
unittest2 enthält einen sehr einfachen Setuptools-kompatiblen Testkollektor. Geben Sie test_suite = 'unittest2.collector' in Ihrer setup.py an. Dies startet die Testerkennung mit den Standardparametern aus dem Verzeichnis, das setup.py enthält. Daher ist dies möglicherweise am nützlichsten (siehe unittest2 / collector.py).
Im Moment verwende ich nur ein Skript namens run_tests.py, aber ich hoffe, dass ich dies beseitigen kann, indem ich zu einer Lösung übergehe, die nur verwendet python setup.py test.
Hier ist das, was run_tests.pyich entfernen möchte:
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)