मैं यह पता लगाने की कोशिश कर रहा हूं कि python setup.py test
इसके बराबर चलाने के लिए कैसे प्राप्त करें python -m unittest discover
। मैं एक run_tests.py स्क्रिप्ट का उपयोग नहीं करना चाहता और मैं किसी भी बाहरी परीक्षण उपकरण (जैसे nose
या py.test
) का उपयोग नहीं करना चाहता । यह ठीक है अगर समाधान केवल अजगर 2.7 पर काम करता है।
में setup.py
, मुझे लगता है कि मुझे विन्यास में test_suite
/ और / या test_loader
फ़ील्ड में कुछ जोड़ने की आवश्यकता है , लेकिन मुझे ऐसा संयोजन नहीं मिल रहा है जो सही ढंग से काम करता हो:
config = {
'name': name,
'version': version,
'url': url,
'test_suite': '???',
'test_loader': '???',
}
क्या यह केवल unittest
अजगर 2.7 में निर्मित का उपयोग करना संभव है ?
FYI करें, मेरी परियोजना संरचना इस प्रकार है:
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 में एक बहुत ही बुनियादी सेटपूल संगत परीक्षण कलेक्टर शामिल हैं। अपने setup.py में test_suite = 'unittest2.collector' निर्दिष्ट करें। यह डायरेक्टरी के डिफ़ॉल्ट मापदंडों के साथ सेटअप ओरिजिन के साथ टेस्ट डिस्कवरी शुरू करता है, इसलिए यह शायद एक उदाहरण के रूप में सबसे अधिक उपयोगी है (देखें unittest2 /CD.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)