快速摘要:让python中的unittest工作,它接受cmd行参数,并使用-b标志来运行测试
我在一个名为文件工具.py在
def get_passedargdict():
'''need a place to setup args'''
parser = argparse.ArgumentParser(description="pass me some data")
parser.add_argument("-skipmd5", "--skipmd5", help="skip the md5 check", required=False)
parser.add_argument("-keepinput", "--keepinput", help="copy instead of moving the input file", required=False)
parser.add_argument("-keepconfig", "--keepconfig", help="copy instead of moving the config file", required=False)
passedargs = parser.parse_args()
passedargdict = {}
if passedargs.skipmd5 == "y":
passedargdict["skipmd5"] = True
else:
passedargdict["skipmd5"] = False
if passedargs.keepinput == "y":
passedargdict["keepinput"] = True
else:
passedargdict["keepinput"] = False
if passedargs.keepconfig == "y":
passedargdict["keepconfig"] = True
else:
passedargdict["keepconfig"] = False
return passedargdict
很直接,很好用。我接收命令行的内容并将其放入字典中。现在,我想添加一个非常基本的单元测试(我已经有很多单元测试正在运行),使用:
^{pr2}$在一个名为test的文件中_文件工具.py这是有效的:
def test_get_passedargdict(self):
passedargdict = get_passedargdict()
self.assertFalse(passedargdict["keepinput"])
self.assertFalse(passedargdict["keepconfig"])
self.assertFalse(passedargdict["skipmd5"])
我可以跑:
test_filetools.py
而且效果很好。我热爱生活。但是我这里有很多单元测试,我不希望屏幕上出现所有的垃圾邮件我只想要一些小圆点,所以我尝试了:
test_filetools.py -b
我失败了:
Stderr:
usage: test_filetools.py [-h] [-skipmd5 SKIPMD5] [-keepinput KEEPINPUT]
[-keepconfig KEEPCONFIG]
test_filetools.py: error: unrecognized arguments: -b
所以看起来我的get_passedargdict()是在尝试引入-b。如果我把那个单元测试去掉,那么-b就可以正常运行了。在
有什么想法可以让这个unittest接受参数,同时使用-b选项而不会导致失败吗?谢谢您!在
看来我自己的帖子有点受骗,所以我自己来回答!这篇文章看起来有很多选择:
How do you write tests for the argparse portion of a python module?
我使用make函数获取参数,在实际代码中,将命令行的内容传递给它,在测试硬代码中它是空的。在
以下是我为考试所做的改变:
我现在的实际代码是这样的:
^{pr2}$以及功能:
相关问题 更多 >
编程相关推荐