首页 > 解决方案 > 在 Windows 上获取子进程的错误消息

问题描述

在 python 测试框架中,我想测试本机二进制文件是否运行良好:

r = subprocess.run([path], capture_output=True)
if r.returncode:
  fail(f'Failed to run {path}, rc: {r.returncode}, stdout: {r.stdout}, stderr: {r.stderr}')

这在 Linux 上效果很好。但是,在 Windows 上,如果二进制文件有问题,例如:它找不到运行时库,我会得到:

Failed to run foo.exe, rc: 3221225781, stdout: b'', stderr: b''

这不是超级有用。如果我手动运行二进制文件,我会收到提示:“代码执行无法继续,因为找不到 lib.dll”。有没有办法在 python 包装器中获取这个提示的值?否则很难调试 CI 故障。

(我知道我必须将 lib 放在应用程序旁边 [或在 PATH 中] 才能使其工作。我有兴趣使错误消息准确,所以下次失败时,它会很明显)

标签: pythonwindows

解决方案


推荐阅读