আপনার কোডটি রিফ্যাক্টর করা উচিত এবং পার্সিংটি কোনও ফাংশনে সরিয়ে নেওয়া উচিত:
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
স্ক্রিপ্টের নাম উপস্থাপন করে এটি সিএলআই অপারেশন চলাকালীন অতিরিক্ত সুইচ হিসাবে না প্রেরণে সরানো হয়েছে।)
আপনার পরীক্ষাগুলিতে, আপনি তারপরে যা পরীক্ষা করতে চান তার যে তালিকা যুক্তি দিয়ে পার্সার ফাংশনটি কল করতে পারেন:
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')