मैंने जो किया वह एक रैपर स्क्रिप्ट है जो अलग-अलग परीक्षण फ़ाइलों को चलाती है:
मुख्य रैपर run_tests.py
:
#!/usr/bin/env python3
# Usage: ./run_tests.py -h http://example.com/ tests/**/*.py
import sys, unittest, argparse, inspect, logging
if __name__ == '__main__':
# Parse arguments.
parser = argparse.ArgumentParser(add_help=False)
parser.add_argument("-v", "--verbose", action="store_true", dest="verbose", help="increase output verbosity")
parser.add_argument("-d", "--debug", action="store_true", dest="debug", help="show debug messages")
parser.add_argument("-h", "--host", action="store", dest="host", help="Destination host")
parser.add_argument('files', nargs='*')
args = parser.parse_args()
# Load files from the arguments.
for filename in args.files:
exec(open(filename).read())
# See: http://codereview.stackexchange.com/q/88655/15346
def make_suite(tc_class):
testloader = unittest.TestLoader()
testnames = testloader.getTestCaseNames(tc_class)
suite = unittest.TestSuite()
for name in testnames:
suite.addTest(tc_class(name, cargs=args))
return suite
# Add all tests.
alltests = unittest.TestSuite()
for name, obj in inspect.getmembers(sys.modules[__name__]):
if inspect.isclass(obj) and name.startswith("FooTest") and len(name) > len("FooTest"):
alltests.addTest(make_suite(obj))
# Run tests.
result = unittest.TextTestRunner(verbosity=2).run(alltests)
sys.exit(not result.wasSuccessful())
फिर परीक्षण के लिए एक और आवरण:
:
import sys, os, unittest
from FooTest import FooTest
class FooTest1(FooTest):
def test_homepage(self):
self.site.get(self.base_url + "/")
log.debug("Home page loaded.")
तो आप आसानी से चला सकते हैं परीक्षण की तरह खोल से:
class FooTest(unittest.TestCase):
def __init__(self, *args, cargs=None, **kwargs):
super().__init__(*args, **kwargs)
self.vdisplay = Xvfb(width=1280, height=720)
self.vdisplay.start()
self.args=cargs
self.log=logging
def setUp(self):
self.site = webdriver.Firefox()
def kill(self):
self.vdisplay.stop()
फिर अलग फ़ाइलों में प्रत्येक परीक्षा कैसा लगेगा
$ ./run_tests.py -h http://example.com/ test1.py test2.py
आप कुछ परीक्षणों के भीतर सभी फ़ाइलों को निर्दिष्ट करने के लिए वाइल्डकार्ड का उपयोग कर सकते हैं, या a new globbing option (**
) का उपयोग सभी परीक्षणों को पुन: क्रमबद्ध करने के लिए कर सकते हैं (shopt -s globstar
द्वारा सक्षम)।
+1 nosetests –
जाने का तरीका है दुख की बात यह अभी तक PyDev के साथ एकीकृत नहीं है ... –
unittest2 लाइब्रेरी एक बहुत ही रोचक टूल लगता है। आपकी जानकारी के लिए धन्यवाद। – stanleyxu2005