如何解决popen_spawn 期望在无限循环之前
不幸的是,我的任务是为在 Windows 上运行的 Python 编写单元测试。我无权访问容器,必须处理与 Windows 本身的交互。我正在运行 Python 3.9
我正在使用 pexpect.popen_spawn 来生成子 python 脚本,我正在为其编写测试并使用 expect 方法读取子项的标准输出。
当我测试一个正常运行和终止的脚本时,我让它按预期工作
child = popen_spawn.PopenSpawn(['python.exe','test.py'],encoding='utf-8')
child.logfile = sys.stdout
child.expect('foo')
child.expect(pexpect.EOF)
test.py 这里只有这一行
print('foo')
但是,当 test.py 包含无限循环时,就像我计划测试的脚本一样,子项的期望在默认的 30 秒窗口中无法匹配。新的有问题的test.py如下:
import time
print('foo')
while(True):
time.sleep(1)
以及对测试脚本的修改如下:
child = popen_spawn.PopenSpawn(['python.exe',encoding='utf-8')
child.logfile = sys.stdout
child.expect('foo')
child.kill(signal.CTRL_C_EVENT)
循环以某种方式阻止 popen_spawn 读取子进程的标准输出,我无法弄清楚原因。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。