运行时Python程序的外部输入



我正在创建一个测试自动化,它使用一个没有任何接口的应用程序。然而,应用程序在更改模式时会调用批处理脚本,因此我能够捕捉模式转换。

我想做的是让批处理脚本在运行时为我的python脚本(我有一个在python中运行的状态机(提供输入。这样我就可以用python而不是批处理文件来监控应用程序的状态。

我使用的状态机与Karn Saheb的状态机类似:https://dev.to/karn/building-a-simple-state-machine-in-python

然而,不是像那样静态地改变状态

device.on_event('event')

我想让python脚本做一些类似的事情:

while(True):
device.on_event(input()) # where the input is passed from the batch script:
REM state.bat
set CurrentState=%1
"magic code to pass CurrentState to python input()" %CurrentState%

我看到一个解决方案是,每次用"event"调用python脚本时,都从批处理文件中启动它,然后在终止python脚本时将当前事件保存在另一个文件中。。。但我希望避免这样的处理,而是在运行时对此进行评估。

提前谢谢!

在不对临时文件进行丑陋轮询的情况下,一种合理的可移植方法是使用套接字:让主进程listen和批处理文件启动一个连接到服务器并写入消息的小程序。

这里有一些安全注意事项:您可以从只侦听环回接口开始,如果本地机器不应受到信任,则可以进行进一步的身份验证。

如果您有多个这样的进程,或者如果您需要在发布下一个报告之前处理孩子的死亡,您将不得不使用线程或类似select的东西来统一来自不同输入通道的新闻(例如,等待孩子退出等待下一个批处理文件的新闻(。

最新更新