我如何对 Configparser 进行单元测试
How could I unittest Configparser
你好,我有一个简单的配置文件,我们称之为 config.cfg,以及一个使用 configparser 读取文件的功能,传递两个参数,一个用于配置文件路径,另一个用于配置文件的名称部分.
config.cfg
[SECTION1]
key1 = value1
key2 = value2
key3 = value3
fuction_to_test
def read_config_file(CFG_PATH, CFG_SECTION):
try:
cf = configparser.ConfigParser()
cf.read(CFG_PATH)
return cf.[CFG_SECTION].get('key1')
except KeyError:
return " "
我想对代码进行单元测试,但我不知道该怎么做,我会在部分和键名称正确时测试返回值的 assertequal,并在部分名称不正确时测试 rise KeyError '存在于配置文件中。
我可以模拟 CFG_PATH 和 CFG_SECTION 进行隔离,不需要读取配置文件。
但我很困惑如何实现返回值和 Keyerror 测试。这是测试功能的正确方法还是我错了?有人可以帮助我或分享一些代码吗?
顺便说一句,我正在使用 python 3.6
我通常使用集成测试来验证 read_config_file
等功能。集成测试将存储一个具有已知配置的夹具文件,例如:
# tests/fixtures/config.has_key.cfg
[SECTION1]
key1 = value1
key2 = value2
key3 = value3
那么你需要2个测试用例来充分练习你的方法:
def test_read_config_file_contains_section(self):
self.assertEqual(
'value1',
read_config_file('tests/fixtures/config.has_key.cfg', 'SECTION1')
)
def test_read_config_file_missing_section(self):
with self.assertRaises(KeyError):
read_config_file('tests/fixtures/config.has_key.cfg', 'MISSING_SECTION')
另一种选择是将您的函数分解为 2 个不同的部分:
- 正在解析
- 读取配置值
下面的函数采用一个已经解析的配置文件并尝试检索部分值:
def read_config(cfg, CFG_SECTION):
try:
return cfg.[CFG_SECTION].get('key1')
except KeyError:
return " "
这种方法对于单元测试来说很简单。
你好,我有一个简单的配置文件,我们称之为 config.cfg,以及一个使用 configparser 读取文件的功能,传递两个参数,一个用于配置文件路径,另一个用于配置文件的名称部分.
config.cfg
[SECTION1]
key1 = value1
key2 = value2
key3 = value3
fuction_to_test
def read_config_file(CFG_PATH, CFG_SECTION):
try:
cf = configparser.ConfigParser()
cf.read(CFG_PATH)
return cf.[CFG_SECTION].get('key1')
except KeyError:
return " "
我想对代码进行单元测试,但我不知道该怎么做,我会在部分和键名称正确时测试返回值的 assertequal,并在部分名称不正确时测试 rise KeyError '存在于配置文件中。
我可以模拟 CFG_PATH 和 CFG_SECTION 进行隔离,不需要读取配置文件。 但我很困惑如何实现返回值和 Keyerror 测试。这是测试功能的正确方法还是我错了?有人可以帮助我或分享一些代码吗?
顺便说一句,我正在使用 python 3.6
我通常使用集成测试来验证 read_config_file
等功能。集成测试将存储一个具有已知配置的夹具文件,例如:
# tests/fixtures/config.has_key.cfg
[SECTION1]
key1 = value1
key2 = value2
key3 = value3
那么你需要2个测试用例来充分练习你的方法:
def test_read_config_file_contains_section(self):
self.assertEqual(
'value1',
read_config_file('tests/fixtures/config.has_key.cfg', 'SECTION1')
)
def test_read_config_file_missing_section(self):
with self.assertRaises(KeyError):
read_config_file('tests/fixtures/config.has_key.cfg', 'MISSING_SECTION')
另一种选择是将您的函数分解为 2 个不同的部分:
- 正在解析
- 读取配置值
下面的函数采用一个已经解析的配置文件并尝试检索部分值:
def read_config(cfg, CFG_SECTION):
try:
return cfg.[CFG_SECTION].get('key1')
except KeyError:
return " "
这种方法对于单元测试来说很简单。