gpt4 book ai didi

python - 如何在 python 中使用 nosetests 同时传递/接受 argparse 的参数?

转载 作者:太空狗 更新时间:2023-10-30 02:10:35 26 4
gpt4 key购买 nike

我想在我的项目中使用nosecoverage。当我使用 --with-coverage 参数运行 nose 时,我的程序参数解析模块变得疯狂,因为根据它“--with-coverage”不是真正的参数。

如何仅在测试期间关闭 argparse? Nose 说我所有的测试都失败了,因为争论不好。

最佳答案

事实上,前几天我自己也遇到了这个问题。您不需要“禁用”您的解析模块或任何东西。您可以做的是更改使用 argparse 的模块,以忽略它接收到的无法识别的参数。这样它们仍然可以被其他脚本使用(例如,如果您的命令行调用将辅助参数传递给另一个程序执行)。

如果没有您的代码,我将假定您在 argparse.ArgumentParser 实例上使用标准的 parse_args() 方法。将其替换为 parse_known_args()

然后,每当您随后引用解析参数 Namespace 对象时,您都需要指定和元素,特别是 0。而 parse_args() 返回 args 对象单独,parse_known_args() 返回元组:第一个元素是解析的known 参数,后一个元素包含忽略的无法识别的参数(您可以稍后在您的Python 代码,如有必要)。

这是我自己项目中的示例更改:

class RunArgs(object):
'''
A placeholder for processing arguments passed to program execution.
'''

def __init__(self):
self.getArgs()
#self.pause = self.args.pause # old assignment
self.pause = self.args[0].pause # new assignment
#...

def __repr__(self):
return "<RunArgs(t=%s, #=%s, v=%s)>" % (str(x) for x in (self.pause,self.numreads,self.verbose))

def getArgs(self):
global PAUSE_TIME
global NUM_READS
parser = argparse.ArgumentParser()
parser.add_argument('-p', '--pause', required=False,
type=self.checkPauseArg, action='store', default=PAUSE_TIME)
parser.add_argument('-n', '--numreads', required=False,
type=self.checkNumArg, action='store', default=NUM_READS)
parser.add_argument('-v', '--verbose', required=False,
action='store_true')
#self.args = parser.parse_args() # old parse call
self.args = parser.parse_known_args() # new parse call
#...

关于python - 如何在 python 中使用 nosetests 同时传递/接受 argparse 的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28976912/

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