Python argparse错误:无法识别选项
我有一个关于argparse的问题。 以下是我的部分代码:Python argparse错误:无法识别选项,python,unit-testing,python-2.7,testing,argparse,Python,Unit Testing,Python 2.7,Testing,Argparse,我有一个关于argparse的问题。 以下是我的部分代码: (...) def main(): parser = argparse.ArgumentParser() parser.add_argument('-g', '--gfirst', dest="a", type=int, required=True) args = parser.parse_args() print args.a #Testing print args.a #Testing if
(...)
def main():
parser = argparse.ArgumentParser()
parser.add_argument('-g', '--gfirst', dest="a", type=int, required=True)
args = parser.parse_args()
print args.a #Testing
print args.a #Testing
if __name__ == '__main__':
main()
print "3"
unittest.main(verbosity=2)
print "4"
(...)
我试图将“a”设置为执行测试用例所需的值,因为我将来需要这个值。然而
$python regular\u test.py--gfirst 2
2.
2.
3.
选项--gfirst未识别
用法:regular-test.py[选项][测试][…]
选项:
-h、 --帮助显示此消息
-v、 --详细输出
-q、 --安静的最小输出
-f、 --第一次故障时快速停止
-c、 --捕获控制-c并显示结果
-b、 --测试运行期间的缓冲区stdout和stderr
…如您所见,程序接受并打印参数,但测试用例本身不执行。我插入了一些图片来显示哪些正在执行,哪些没有
我做错了什么?
提前谢谢
注:我正在使用python 2.7.3ps2.:测试运行正常(在向程序添加argparse之前)。您的问题是单元测试人员想要拥有任何命令行参数。这可能会使你自己的论点变得复杂 从技术上讲,单元测试应该包含运行所需的一切,而不应该依赖于参数。您可能会考虑将任何与环境相关的配置(例如,DB主机名)移动到环境变量。 我的两美分。
unittest.main()
本身,它无法理解/识别您自定义的参数(请参阅TestProgram
类的parseArgs()
方法)
相反,请使用以下方法运行测试:
另请参见相关线程:
unittest.main
?它显然定义了一个不同于regular\u test.main
中的参数解析器。显示了调用unittest.main()的基本示例。我的代码的框架是这样的,然后在regular_test.py
部分的某个地方,您没有展示一个测试函数,它定义了一个不同的参数解析器,它不识别--gfirst
参数,或者更确切地说,unittest.main
作为它自己的解析器,它也接受命令行参数,只是不是--gfirst
。这可能就是问题所在。我没有搜索unittest,因为我认为问题与argparse有关。谢谢大家。@Miller是的,甚至连我们都在说:unittest.main()是一个命令行程序,它从模块加载一组测试并运行它们。
runner = unittest.TextTestRunner(verbosity=2)
result = runner.run(unittest.makeSuite(MyTestCase))