我有一个Python文件,其中包含源代码中的单元测试。它的工作原理如下:
parser = argparse.ArgumentParser()
parser.add_argument('--test', action='store_true', help="Run unit tests and return.")
args = parser.parse_args()
if args.test:
testsuite = unittest.TestLoader().loadTestsFromTestCase(SanitizeTestCase)
unittest.TextTestRunner(verbosity=1).run(testsuite)
如果args.test
为false,程序将按预期运行。我不想把它变成一个完整的setuptools
项目,它是一个非常简单的脚本,带有一些单元测试来评估它是否符合它的预期。
我现在发现自己需要解析其他论点,以及事情开始分崩离析的地方。 --test
是一个互斥参数,如果传递--test
,则所有其他参数都不适用。
有没有办法在argparse中拥有互斥的参数组?
答案 0 :(得分:0)
有mutually exclusive group
机制,但该组中的所有参数都是互斥的。你不能说,--test
x或其他任何其他人。
但是这样一个群体没有做任何深刻的事情。它会为usage
行添加一些标记(尝试一下),并且当您的用户(您自己?)违反排他性时会抱怨。
你可以自己做同样的事情,并对它们进行微调。您可以为parser
提供自定义usage
行。解析后,您可以选择忽略冲突的值,也可以选择引发自己的错误消息(parser.error('dumb user, cant you read ...?')
)。例如,如果args.test
为True
,则可以忽略所有其他参数,无论其值如何。