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 __name__ == '__main__':
    main()
    print "3"
    unittest.main(verbosity=2)
    print "4"
(...)

我试图将'a'设置为执行测试用例所需的值,因为我将来会需要这个值。然而…

$ python regular_test.py --gfirst 2
2
2
3
option --gfirst not recognized
Usage: regular-test.py [options] [test] [...]
Options:
  -h, --help       Show this message
  -v, --verbose    Verbose output
  -q, --quiet      Minimal output
  -f, --failfast   Stop on first failure
  -c, --catch      Catch control-C and display results
  -b, --buffer     Buffer stdout and stderr during test runs

…正如您所看到的,程序接受参数并输出它,但是测试用例本身没有执行。我插入了一些图片来显示哪些可以执行,哪些不能执行。

我做错了什么?提前感谢

p。:我正在使用python 2.7.3
ps2。:测试正常运行(在向程序添加argparse之前)

unittest.main()本身解析命令行参数,它不能理解/识别您自定义的参数(参见TestProgram类的parseArgs()方法)。

相反,使用TextTestRunner运行测试:

runner = unittest.TextTestRunner(verbosity=2)
result = runner.run(unittest.makeSuite(MyTestCase))

参见相关线程:

  • argparse和unittest python
  • 从另一个脚本调用python unittest并导出所有错误消息

您的问题是单元测试人员想要拥有任何命令行参数。这可能会让你提出自己的观点变得复杂。

从技术上讲,单元测试应该包含运行所需的所有内容,不应该依赖于参数。您可以考虑将任何与环境相关的配置(例如,DB主机名)移到环境变量中。

我的两分钱

最新更新