- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在研究如何在我的单元测试程序中使用模拟。
现在我有一个 SafeConfigParser
对象,我想测试我编写的内容是否正确。
在google了SafeConfigParser
的mocking用法之后,我已经知道如何测试SafeConfigParser
的读取了。但我还是不知道如何验证SafeConfigParser
的写入。
我的想法是:
SafeConfigParser
的方法。SafeConfigParser.write()的函数
我需要测试的程序如下:
def write_tokens_to_config(self):
"""Write token values to the config
"""
parser = SafeConfigParser()
with open(self.CONFIG_PATH) as fp:
parser.readfp(fp)
if not parser.has_section('Token'):
parser.add_section('Token')
parser.set('Token', 'access_token', self._access_token)
parser.set('Token', 'refresh_token', self._refresh_token)
with open(self.CONFIG_PATH, 'wb') as fp:
parser.write(fp)
附注您可以从此网址检查read
部分:http://www.snip2code.com/Snippet/4347/
最佳答案
我终于找到了解决方案:)。
我将我的程序(例如:program.py
)修改为以下内容:
class Program():
def __init__(self):
self._access_token = None
self._refresh_token = None
self.CONFIG_PATH = 'test.conf'
def write_tokens_to_config(self):
"""Write token value to the config
"""
parser = SafeConfigParser()
parser.read(self.CONFIG_PATH)
if not parser.has_section('Token'):
parser.add_section('Token')
parser.set('Token', 'access_token', self._access_token)
parser.set('Token', 'refresh_token', self._refresh_token)
with open(self.CONFIG_PATH, 'wb') as f:
parser.write(f)
我的测试程序是这样的:
class TestMyProgram(unittest.TestCase):
def setUp(self):
from program import Program
self.program = Program()
def test_write_tokens_to_config(self):
from mock import mock_open
from mock import call
self.program._access_token = 'aaa'
self.program._refresh_token = 'bbb'
with mock.patch('program.ConfigParser.SafeConfigParser.read'):
m = mock_open()
with mock.patch('__builtin__.open', m, create=True):
self.program.write_tokens_to_config()
m.assert_called_once_with(self.program.CONFIG_PATH, 'wb')
handle = m()
handle.write.assert_has_calls(
[
call('[Token]\n'),
call('access_token = aaa\n'),
call('refresh_token = bbb\n'),
]
)
引用号:http://docs.python.org/dev/library/unittest.mock#mock-open
关于Python SafeConfigParser 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22526023/
我正在研究如何在我的单元测试程序中使用模拟。 现在我有一个 SafeConfigParser 对象,我想测试我编写的内容是否正确。 在google了SafeConfigParser的mocking用法
我正在使用 Click传递一个文件名参数。 ConfigParser.SafeConfigParser.read() 使用此文件名来读取 ini 文件。不幸的是,Click 传入了 read() 无法
我正在尝试使用 python 的 ConfigParser 对象在我的 php.ini 文件中设置一个选项 (xdebug.profiler_enable)。这是代码:我正在尝试修改 php.ini
我有一个配置文件如下: [job] mailto=bob logFile=blahDeBlah.txt 我想使用 SafeConfigParser 读取选项: values = {} config =
ConfigParser 和 SafeConfigParser 有什么区别?确切地说,为什么后者更安全? ConfigParser 的“不安全”是什么?我知道 SafeConfigParser 继承了
我是一名优秀的程序员,十分优秀!