【问题标题】:Python Configparser cannot find section under Unittest?Python Configparser 在 Unittest 下找不到部分?
【发布时间】:2017-06-23 08:03:00
【问题描述】:

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

在单元测试中,我导入了这个解析器文件,然后尝试读取这个 ConfigParse 实例的一个节点。但随后它会引发一个错误,即找不到该部分。

怎么了?有没有办法解决它?

编辑: 所以单元测试只是导入了配置文件。配置文件的名称称为 config。该实例称为 p_config 在测试用例中,该实例将被称为:

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

配置文件看起来很标准。

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

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

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

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

ConfigParser.NoSectionError: No section: 'section1'

单元测试的内容:

class TestConfigFile(TestCase):

    def setUp(self):
        pass

    def tearDown(self):
        pass


    def test_example(self):
        print global_path_config.get('section1', 'a')

【问题讨论】:

  • 用您的代码准确地回答您的问题? ;) 如果你想使用 ConfigParser 而不是 json config。
  • @glegoux 嗨,我更新了。
  • 您能否发布您的 configparser 代码(您在哪里读取文件)以及确切的错误消息?
  • 你的代码是什么导致了错误?错误的回溯在哪里?
  • @T.F.然后请发布您的单元测试,精简到运行它所需的最低限度。

标签: python unit-testing python-unittest configparser


【解决方案1】:

听起来您正在设置测试配置对象,而实际上并未提供配置文件供您的测试读取。

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    相关资源
    最近更新 更多