我正在创建一个测试自动化,它使用没有任何接口的应用程序。但是,应用程序在更改模式时会调用批处理脚本,因此我能够捕获模式转换。
我想要做的是让批处理脚本在运行时为我的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脚本终止时将当前事件保存在另一个文件中……但我希望避免这样的处理,而是在运行时对其进行评估。
提前谢谢你!
发布于 2018-07-31 03:26:37
在不对临时文件进行难看的轮询的情况下,一种合理的可移植方法是使用套接字:让主进程listen
并让批处理文件启动一个小程序,该程序连接到服务器并写入一条消息。
这里有一些安全方面的注意事项:您可以从只侦听环回接口开始,如果本地计算机不应该被信任,则使用进一步的身份验证。
如果您有多个这样的进程,或者如果您需要在子进程发出下一个报告之前处理它的死亡,您将不得不使用线程或类似select
的东西来统一来自不同输入通道的消息(例如,等待子进程退出与等待来自下一个批处理文件的消息)。
https://stackoverflow.com/questions/51590422
复制相似问题