python - 如何使用 bash 脚本执行 python.py 应用程序,然后模拟用户输入
问题描述
我正在尝试编写一个简单的 bash 脚本,使我能够通过将不同的输入应用于 python 应用程序来测试 python 应用程序。
我的目标是做到以下几点:
- 执行我的python应用程序,即。
python3 mycode.py
- python代码旨在等待用户输入,然后是回车键。bash 脚本提供输入和回车键。
- 使用我硬编码到脚本中的任何不同输入重复此操作多次。
我花了很多时间搜索有关此主题的先前问题,并尝试使先前的答案适应此任务,但似乎没有什么效果。
我可以执行 python 应用程序。但后来我的问题在于让脚本输入用户输入。我的 bash 脚本只是暂停并等待我输入输入。
python代码mycode.py
如下:
reader = sys.stdin
word = reader.readline()
print(word)
我的麻烦似乎是让 bash 脚本将我的输入参数传递给 pythonreadline()
我的 bash 脚本编写如下:
#!/bin/bash
python3 mycode.py
read
我还尝试使用python3 mycode.py &
将控制权从 python 返回给 bash 脚本,以使其接受硬编码的用户输入,但这也不起作用。我也尝试过使用echo
and $1
。
任何建议,将不胜感激。谢谢你。
更新:事实证明,python3 mycode.py <<< 'somestring'
如果有人对未来感兴趣,那效果真的很好。
解决方案
如果您使用的是 bash v4 或更高版本,您可能想要使用协进程,使用“coproc”命令。但是,如果您的唯一目标是测试 python,为什么不看看 pytest,并阅读猴子补丁。
推荐阅读
- angularjs - 被 CORS 阻止:“Access-Control-Allow-Origin”标头包含多个值“*,*”,Laravel8
- swift - 如何添加字典并获取值
- c# - 编辑 Igx Grid 单元格时更新 SQL 数据库
- localhost - RDLC reportviewer 在 localhost 中正确工作,但仅在带有 Edge 和 chrome 的 Web 服务器中显示多个报告页面中的一页
- r - 打印不带引号的 sprintf
- docker - 命令 dockerd 中开关 --containerd 的目的是什么?
- xsitype - 如何从 xsi:type 行中提取数据?
- authentication - gitlab-runner 因 HTTP Basic 失败:访问被拒绝
- php - 通过解析 phpinfo 的输出克隆 php 配置
- c++ - CMake 跳过标准的预编译头文件