Tim*_*ott 2 python argparse python-unittest
我刚刚在单元测试中添加了一个图形实用程序——基本上,测试的全自动版本只是进行数值比较,但我希望人们能够要求绘图。
如果我使用我的新参数,仅仅使用 argparseunittest.main()就会令人窒息。我目前正在做的是检查该参数,然后从中删除它sys.argv似乎是错误的。
有没有更好的方法给这只猫剥皮?
unittest.main()会采用备用 argv。unittest.main()忽略争论的方法。if __name__ == '__main__':
parser = argparse.ArgumentParser(
description='Test correction'
)
parser.add_argument(
'--plot-results',
help='Plot results of cal test',
action='store_true'
)
args = parser.parse_args()
if args.plot_results:
while '--plot-results' in sys.argv:
sys.argv.remove('--plot-results')
unittest.main()
Run Code Online (Sandbox Code Playgroud)
Argument.parse_known_args基本上是您的第二个选择:解析您定义的参数,并返回您不认识的参数以传递给unittest.main.
if __name__ == '__main__':
parser = argparse.ArgumentParser(
description='Test correction'
)
parser.add_argument(
'--plot-results',
help='Plot results of cal test',
action='store_true'
)
args, remaining = parser.parse_known_args()
# Restore the script name which parse_known_args() also stripped.
remaining.insert(0, sys.argv[0])
unittest.main(argv=remaining)
Run Code Online (Sandbox Code Playgroud)
可能不言而喻,但不要添加任何parser与自身使用的解析器冲突的参数unittest。这些(大部分?)记录在此处。