我遇到python configobj的问题。 为什么在config.validate(validator,preserve_errors = True)期间将来自cs的“参数”(命名参数)添加到配置?
def test_MissingSectionError(self):
cfg = '''
[general]
name = TestInteractionExample 1
[this_is_not_para_meter]
[[frequency]]
default_value = 900
description = Description of parameter1
'''
cs = '''
[general]
name = string
[parameter]
[[__many__]]
default_value =
description =
'''
cfg_io = StringIO(cfg)
cs_io = StringIO(cs)
config = self.parser._get_configobj(cfg_io, cs_io, self.script)
print 'Before validation: {}'.format(config)
validator = Validator()
results = config.validate(validator, preserve_errors=True)
print 'After validation: {}'.format(config)
print 'result: {}'.format(results)
# self.assertRaises(MissingSectionError, self.parser._validate_config, config, self.script)
打印给出:
验证前:{u'general':{u'name':u'TestInteractionExample 1'},u'this_is_not_para_meter':{u'frequency':{u'default_value':u'900',u'description ':u'参数1的描述'}}} 验证后:{u'general':{u'name':u'TestInteractionExample 1'},u'this_is_not_para_meter':{u'frequency':{u'default_value':u'900',u'description':u '参数说明'}},'参数':{}} 结果:是的
奇怪的是,这验证为true,因为config中缺少“parameter”。但是,如果它在config.validate(validator,preserve_errors = True)中添加到config,那么它也是真的。也许有一些选项可以将缺失的值从cs复制到config。