gpt4 book ai didi

python - Argparse 和 unittest.main()

转载 作者:行者123 更新时间:2023-12-02 18:04:25 24 4
gpt4 key购买 nike

我刚刚在单元测试中添加了一个图形实用程序——基本上,全自动版本的测试只是进行数值比较,但我希望人类能够请求绘图。

仅使用 argparse,如果我使用我的新参数,unittest.main() 会令人窒息。我目前正在做的是检查该参数,然后将其从 sys.argv 中删除,这似乎错误

有没有更好的方法给这只猫剥皮?

  • 一种告诉 argparse 使用来自 sys.argv 的参数的方法。可能还是错了,但不是我做的,所以没关系。
  • 一种告诉 argparse 取出所有“使用过的参数”的 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()

最佳答案

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)

可能不言而喻,但不要向 parser 添加任何与 unittest 本身使用的解析器冲突的参数。这些(大部分?)记录在案 here .

关于python - Argparse 和 unittest.main(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73625874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com