我想将自己的参数传递到为单元测试设置的文件中。因此,从命令行调用它应该像这样工作:
python Test.py --c keith.ini SomeTests.test_one
目前我遇到了两个问题。
1)Argparse不允许未知参数
用法:Test.py [-h] [--c CONFILE] Test.py: 错误:无法识别的参数:SomeTests.test_one
2)单元测试不允许未知参数。因此,--c fileName未被unittest接受,并返回:
AttributeError: 'module' object has no attribute 'keith'
因此,我的想法是在调用单元测试运行程序之前收集我的参数并将其删除。
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(),所以我将解析行改为:
args = parser.parse_known_args(['--c']).
我认为这会解决我的问题并提供给我一些可以传递给unittest的东西。不幸的是,我收到了以下错误信息:
Test.py: error: argument --c: expected one argument.
这应该可以工作吧?