简短的答案是猴子补丁
raw_input()。
这是一个使用a的简单示例
lambda,该示例丢弃提示并返回我们想要的内容。
被测系统
cat ./name_getter.py#!/usr/bin/env pythonclass NameGetter(object): def get_name(self): self.name = raw_input('What is your name? ') def greet(self): print 'Hello, ', self.name, '!' def run(self): self.get_name() self.greet()if __name__ == '__main__': ng = NameGetter() ng.run()$ echo Derek | ./name_getter.py What is your name? Hello, Derek !测试用例:
$ cat ./t_name_getter.py#!/usr/bin/env pythonimport unittestimport name_getterclass TestNameGetter(unittest.TestCase): def test_get_alice(self): name_getter.raw_input = lambda _: 'Alice' ng = name_getter.NameGetter() ng.get_name() self.assertEquals(ng.name, 'Alice') def test_get_bob(self): name_getter.raw_input = lambda _: 'Bob' ng = name_getter.NameGetter() ng.get_name() self.assertEquals(ng.name, 'Bob')if __name__ == '__main__': unittest.main()$ ./t_name_getter.py -vtest_get_alice (__main__.TestNameGetter) ... oktest_get_bob (__main__.TestNameGetter) ... ok----------------------------------------------------------------------Ran 2 tests in 0.000sOK



