我有一个python函数,询问用户是否要使用当前文件,或选择一个新文件。我需要测试一下。这是函数:
def file_checker(self):
file_change = raw_input('If you want to overwite existing file ?(Y/N) ')
if (file_change == 'y') or (file_change == 'Y') or (file_change == 'yes'):
logging.debug('overwriting existing file')
elif file_change.lower() == 'n' or (file_change == 'no'):
self.file_name = raw_input('enter new file name: ')
logging.debug('created a new file')
else:
raise ValueError('You must chose yes/no, exiting')
return os.path.join(self.work_dir, self.file_name)
当用户选择“是”时,我已经放弃了该部分,但是我不知道如何测试“否”部分:
def test_file_checker(self):
with mock.patch('__builtin__.raw_input', return_value='yes'):
assert self.class_obj.file_checker() == self.fname
with mock.patch('__builtin__.raw_input', return_value='no'):
#what should I do here ?
根据mock
文件:
如果
side_effect
为可迭代,则每次对模拟的调用都将返回可迭代的下一个值。side_effect也可以是任何可迭代的对象。重复调用该模拟将返回iterable中的值(直到iterable耗尽并引发StopIteration为止):
因此,该no
部分可以表示为:
with mock.patch('__builtin__.raw_input', side_effect=['no', 'file2']):
assert self.class_obj.file_checker() == EXPECTED_PATH
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句