आपको अपना कोड रिफलेक्टर करना चाहिए और पार्सिंग को एक फंक्शन में ले जाना चाहिए:
def parse_args(args):
parser = argparse.ArgumentParser(...)
parser.add_argument...
# ...Create your parser as you like...
return parser.parse_args(args)
फिर अपने main
फंक्शन में आपको बस इसे कॉल करना चाहिए:
parser = parse_args(sys.argv[1:])
(जहां इसका पहला तत्व sys.argv
स्क्रिप्ट नाम का प्रतिनिधित्व करता है, उसे CLI ऑपरेशन के दौरान अतिरिक्त स्विच के रूप में नहीं भेजने के लिए हटा दिया जाता है।)
अपने परीक्षणों में, आप इसके बाद जो भी तर्क देना चाहते हैं, उसके साथ आप पार्सर फ़ंक्शन को कॉल कर सकते हैं:
def test_parser(self):
parser = parse_args(['-l', '-m'])
self.assertTrue(parser.long)
# ...and so on.
इस तरह आपको कभी भी सिर्फ पार्सर का परीक्षण करने के लिए अपने आवेदन के कोड को निष्पादित नहीं करना पड़ेगा।
यदि आपको अपने आवेदन में बाद में अपने पार्सर में विकल्प बदलने और / या जोड़ने की आवश्यकता है, तो एक कारखाना विधि बनाएं:
def create_parser():
parser = argparse.ArgumentParser(...)
parser.add_argument...
# ...Create your parser as you like...
return parser
आप चाहें तो बाद में इसमें फेरबदल कर सकते हैं, और एक परीक्षण जैसा दिख सकता है:
class ParserTest(unittest.TestCase):
def setUp(self):
self.parser = create_parser()
def test_something(self):
parsed = self.parser.parse_args(['--something', 'test'])
self.assertEqual(parsed.something, 'test')