举个例子,它可能看似不合逻辑.我有一个get_name函数,如下所示,并希望编写一个自动脚本来调用此函数并raw_input自动进入.
def get_name ():
name = raw_input("Please enter your name : ")
print "Hi " + name
Run Code Online (Sandbox Code Playgroud)
自动脚本如下所示,我应该添加什么命令来自动输入我的值?
def run ():
get_name ()
// what should I add here?
Run Code Online (Sandbox Code Playgroud)
您可以将您stdin的文件重定向到该文件,然后raw_input()从该文件中读取.
示例 -
def run():
import sys
f1 = sys.stdin
f = open('input.txt','r')
sys.stdin = f
get_name()
f.close()
sys.stdin = f1
Run Code Online (Sandbox Code Playgroud)
请注意,执行之后 - f = open('input.txt','r')并且sys.stdin = f,raw_input()将从<filename>文件中读取.
完成get_name()调用后,关闭文件并使用恢复stdin sys.stdin = sys.__stdin__,如果要将其恢复为控制台输入,则可以将其还原到f1,这会将其恢复到测试开始之前的状态.
请注意,重定向这样的输入时应该小心.
您也可以stdin用StringIO(即内存文件)代替实际文件。这样,输入的文本将出现在测试代码中,而不是单独的文本文件中。
基于Anand S Kumar(+1):
def run():
import sys
import StringIO
f1 = sys.stdin
f = StringIO.StringIO('entered text') # <-- HERE
sys.stdin = f
get_name()
f.close()
sys.stdin = f1
Run Code Online (Sandbox Code Playgroud)
另外,对于交互式命令行功能/工具的更复杂的测试,您可能需要检查pyexpect软件包。
| 归档时间: |
|
| 查看次数: |
4598 次 |
| 最近记录: |