我正在使用python创建一个子进程来检查是否没有出现断言。在
我想捕获错误输出和返回代码。这很好,但我遇到的问题是,当它运行到断言时,它会给我一个对话框,它就挂在那里。在检索任何信息之前,我必须单击断言框。有没有办法让它不弹出并继续程序或发送消息关闭窗口?在
这是一个问题,因为这是一个自动化服务。在
import subprocess
pipe = subprocess.Popen('test2.exe', shell=True, stderr=subprocess.PIPE)
for line in pipe.stderr:
print line
可执行文件是从c++代码编译的,并且有一个断言在测试时会失败。在
一般来说,并不是一个简单的解决方案,因为理论上一个程序可以创建任意数量的等待用户输入的窗口。如果您有低级进程的源代码,最简单的方法就是修改它以调用^{} 来禁用消息框。在
如果你没有源代码,那会非常非常困难。您可能会编写一个大的hack,它会将调试器附加到低级进程,并在调用
abort()
时设置断点。如果该断点被命中,则终止进程并返回适当的错误状态。但这是一个极端的非琐碎的废话。在正如我在评论中提到的,断言弹出窗口在Python中不是一件正常的事情。如果您可以修改子流程中运行的代码,那么您就可以捕获断言并自己处理它,而不是让环境通过弹出窗口来处理它。在
如果它特别寻找断言,这应该可以工作,因为它将捕获断言,打印错误消息,然后引发一个简单的
SystemExit
异常。在相关问题 更多 >
编程相关推荐