我想把我自己的参数传递到为unittest设置的文件中。所以从命令行这样调用它应该可以:
python杂项/测试.py--c级基思·伊尼一些测试。测试一你知道吗
目前我遇到了两个问题。你知道吗
1)Arg parse不允许未知参数
用法:测试.py[-h][--c确认] 测试.py:错误:无法识别的参数:一些测试。测试一你知道吗
2)单元测试不允许未知参数。所以--c文件名不被unittest接受并返回:
AttributeError:“module”对象没有属性“keith”
因此,我们的想法是在调用unittestrunner之前收集并删除我的参数。你知道吗
import unittest
import argparse
myArgs = None
def getArgs( allArgs ):
parser = argparse.ArgumentParser( )
parser.add_argument('--c', dest='conFile', type=str, default=None, help='Config file')
args = parser.parse_args()
if ( args.conFile == None ):
parser.print_help()
return args
class SomeTests(unittest.TestCase):
def test_one(self):
theTest( 'keith' )
def test_two(self):
otherTest( 'keith' )
if __name__ == '__main__':
myArgs = getArgs( sys.argv )
print 'Config File: ' + myArgs.conFile
unittest.main( argv=sys.argv, testRunner = unittest.TextTestRunner(verbosity=2))
有趣的是,我刚刚发现parse_known_args(),所以我将parse行更改为:
args = parser.parse_known_args(['--c']).
我想这会解决我的问题,并给我一些通过unittest。不幸的是我得到:
Test.py: error: argument --c: expected one argument.
这不管用吗?你知道吗
好吧,我费了点劲,但还是弄明白了。这是完全可能的。argparse的文档不正确。函数parse \u known \u args()不应包含已知参数的列表。另外,argparse删除arg[0],这对于返回arg[0]非常重要,以便其他命令可以看到有效的参数列表。我认为这是个错误。我已经包含了最后的示例代码。一旦你把它保存到一个文件中,你就可以像下面的例子那样调用它,它就可以工作了。你知道吗
嗯,好好享受
相关问题 更多 >
编程相关推荐