当我使用以下代码时:
from unittest import mock
import configparser
configtext = '''
[SECTION]
whatever=True
'''
config = configparser.ConfigParser()
config.read_string(configtext)
def test_fails():
expected_value = 'fnord'
with mock.patch.dict(config, {'db': expected_value}):
assert config['db'] is expected_value
我的测试失败,因为AttributeError: 'str' object has no attribute 'items'
。在
这完全不是我所期望的。显然我希望它能像我想要的那样设置值。。。但不幸的是,显然配置只是命令式的。在
我怎样才能修补这个config['db']
是我想要的值,只在测试的生命周期内使用?在
看来问题是我有点小误会。虽然
ConfigParser
看起来像是dict,但实际上不是。堆栈跟踪包含以下证据:注意,它试图在这里执行
^{pr2}$read_dict
。这是因为它需要一个section-ish格式:来自文档
单密钥访问是不可能的。要使此示例生效,必须执行以下操作:
注意:值将转换为字符串形式的对应值。因此,如果您试图在这里存储一个实际的数据库连接(或类似的),它将不起作用。在
相关问题 更多 >
编程相关推荐