使用xvfb-run运行py.test

时间:2012-10-02 15:39:51

标签: python testing pyqt4 xvfb

我正在尝试在Jenkins中运行使用PyQt4的Python包,测试会创建窗口。由于我在Jenkins中运行测试,我需要重定向图形输出,所以我使用的是xvfb-run。大多数情况下,这是有效的,但只有一小部分时间,测试将随机失败:

/usr/bin/xvfb-run: line 171: kill: (27375) - No such process

如果我重新运行测试,它在大多数情况下都能正常工作(所以这只是一次性问题)。

以前有人遇到过这个问题吗?您是否有任何关于改进测试稳定性的变通方法的想法?

2 个答案:

答案 0 :(得分:2)

通过查找Xvfb进程并将其杀死。

ps auwx | grep "Xvfb" | grep -v grep

答案 1 :(得分:1)

如果您的xvfb-run副本是same as mine,我可以确认我也看过这个。

就我而言,目标进程导致Xvfb崩溃。这意味着当拆除不再运行Xvfb时,包装器脚本本身在第171行失败。为了解决这个问题,我将kill $XVFBPID包裹在set +e / set -e块中。如果指定--error-file=以便xvfb-run在目标进程运行时保存Xvfb的异步标准错误输出也很有帮助,这样就可以解决根本原因。

解决方法:

# Kill Xvfb now that the command has exited.
# Ignore failure of kill since we want to be forgiving of Xvfb itself crashing
set +e
kill $XVFBPID
set -e