我在让 docopt 将包含空格的参数解析为适当的字典对象以用于我的单元测试时遇到问题。
这是我目前用来构造参数列表以供 docopt 解析的代码:
testargs = []
def clear_args():
testargs[:] = []
return
def add_testfiles(file1='defaultfile1.txt', file2='defaultfile2.txt'):
clear_args()
testargs.append('--debug')
testargs.append(file1)
testargs.append(file2)
return
def parse_args(optlist):
argstr = ' '.join(optlist)
return docopt(downpost.__doc__, argv=argstr)
我正在为其编写单元测试的代码有 2 个测试,分别给出以下参数:
-t <title> # <title> can be any string (with spaces) inside quotation marks
"A Filename with Spaces.txt" # any filename as long as it's in quotation marks
例如,要添加 -t 参数,我会这样做:
def test_exampleunittest(self):
add_testfiles()
testargs.append('-t "This is the title I want"')
self.args = parse_args(testargs)
self.post = myPythonScript.process(self.args)
self.assertEqual(self.post['Subject'], 'This is the title I want')
如果我使用上述参数运行我正在测试的脚本,它们会被毫无问题地接受,并且输出符合预期。
但是,如果我运行使用包含空格的参数的单元测试,我会得到以下信息:
DocoptExit: Usage: myPythonScript [options] <file_1> <file_2>
其他需要相同 dict 对象(包含相同参数)的单元测试工作正常。
我应该在我的代码中进行哪些更改以使 docopt 像往常一样解析参数?