【发布时间】:2014-06-26 11:21:13
【问题描述】:
我有一个关于 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
...如您所见,程序接受参数并打印它,但测试用例本身不执行。我插入了一些打印件来显示正在执行的内容和未执行的内容。
我做错了什么? 提前致谢
ps.:我使用的是 python 2.7.3
ps2.:测试运行正常(在程序中添加 argparse 之前。)
【问题讨论】:
-
什么是
unittest.main?它显然定义了一个与regular_test.main中的不同的参数解析器。 -
docs.python.org/2/library/unittest.html#basic-example 显示了调用 unittest.main() 的基本示例。我的代码骨架是这样的
-
然后在您未显示的
regular_test.py部分中的某处是一个测试函数,该函数定义了一个不同的参数解析器,该解析器无法识别--gfirst参数,或者更确切地说unittest.main为它自己的解析器也接受命令行参数,而不是--gfirst。
标签: python unit-testing python-2.7 testing argparse