1 回答
TA贡献1844条经验 获得超8个赞
您可以使用mock来模拟 Python 中的 raw_input,并且可以通过重定向sys.stdout到StringIO. 这样你就可以模拟你的函数输入并测试无效和有效的情况:
import sys
import mock
import unittest
import StringIO
import __builtin__
# [..] your code
class Test(unittest.TestCase):
@mock.patch.object(__builtin__, 'raw_input')
def test_refreshtime_validation(self, mocked_raw_input):
my_stdout = StringIO.StringIO()
sys.stdout = my_stdout
mocked_raw_input.side_effect = ['error', '0', '1']
outputs = '\n**Please enter a valid number (Must be an integer).**\n'+\
'\n\n**Please enter a valid number (Must be greater than 0).**\n\n'
valid_value = refreshtime_validation()
sys.stdout = sys.__stdout__
self.assertEquals(my_stdout.getvalue(), outputs)
self.assertEquals(valid_value, 1)
unittest.main()
添加回答
举报