Python Configparser找不到Unittest下的部分?

时间:2017-06-23 08:03:01

标签: python unit-testing python-unittest configparser

所以我必须测试一个Config文件。在此Config文件中,将初始化ConfigParser实例,然后加载配置文件。

在Unittest中,我导入了此解析器文件,然后尝试读取此ConfigParse实例的节点。但是它引发了一个错误,它无法找到该部分。

Howcome?有办法解决吗?

编辑: 所以Unittest刚刚导入了Config文件。配置文件的名称称为config。该实例称为p_config在测试用例中,实例将被调用为:

isSchemaExists

Config文件看起来非常标准。

config.p_config.get('section1','a')

所以我的配置文件看起来非常像普通的Windows配置:

import ConfigParser
p_config = ConfigParser.SafeConfigParser()
p_config.read("xxx.cfg")

它引发的错误只是说它找不到部分:

[section1]
a = 1
b = 2
[section2]
c = 2
d = 4

UnitTest的内容:

ConfigParser.NoSectionError: No section: 'section1'

2 个答案:

答案 0 :(得分:0)

听起来你正在设置测试配置对象而没有实际提供一个配置文件供你的测试阅读。

我假设你使用的是python unittest模块。

您的命令行与运行项目和运行测试有何不同?命令行可能是个问题。

例如,如果您使用python /path/to/file.py <--options> config.ini启动程序并使用python -m unittest /path/to/config/unittest -v启动单元测试,则永远不会读取您的配置文件。

setUp(self):中,您需要使用配置文件位置初始化对象。我更喜欢在setUp中编写一个简短的伪配置文件,因此我可以在tearDown中轻松删除它,并确切地知道它与我的测试有何关联而不会污染我的工作配置文件。

答案 1 :(得分:-1)

如果可以的话,我建议你放弃ConfigParser。使用json文件作为配置

import json
from collections import OrderedDict

def read_config(file_json):
    with open(file_json, 'r') as filename:
        config = filename.read()
    return json.loads(config, object_pairs_hook=OrderedDict)

def write_config(config, file_json):
     data = json.dumps(config, indent=4)
     with open(file_json, 'w') as filename:
         filename.write(data)