Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python argparse错误:无法识别选项_Python_Unit Testing_Python 2.7_Testing_Argparse - Fatal编程技术网

Python 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

我有一个关于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 __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.3

ps2.:测试运行正常(在向程序添加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))