我正在尝试了解如何使用 python 的单元测试框架
我有一段代码看起来像这样——
while True:
filename = raw_input('Enter file')
if os.path.exists(filename):
break
else:
print "That file does not exist"
return filename
有人可以帮我开发 unittest 模块来测试它吗?我问这个问题是为了学习如何使用单元测试(我正在尝试学习 TTD:测试驱动开发)
到目前为止我已经想到了这个 ... 导入单元测试 导入操作系统路径
类 TestFunctions(unittest.TestCase):
def setUp(self):
self.prompt = 'Enter filename: '
def test_get_file(self):
# TODO make sure empty filename argument requests for new filename
filename = find_author.get_valid_filename(self.prompt)
self.assertTrue(<EXPRESSION?>)
# TODO make sure valid filename returns the "filename"
# TODO make sure invalid filename prompts that file does not exit and requests new filename
如果 name == "main": 单元测试.main()
最佳答案
一个简单的方法是猴子修补 raw_input
。
例如,在你的测试模块中(因为你应该将你的测试者和测试者分成单独的文件),你可能有:
import module_being_tested
... run tests ...
在运行测试之前,您可以简单地执行以下操作:
import module_being_tested
def mock_raw_input(s):
return 'data.txt'
module_being_tested.raw_input = mock_raw_input
... run tests ....
现在,当您的测试模块调用 raw_input
时,它实际上会调用 mock_raw_input
,并且总是会返回 'data.txt'
.
关于python - 在python 2的unittest模块中模拟raw_input(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20458978/