(注意我怀疑这是PyQt特有的,所以我也用Qt标记了)
我们在开发工作站上使用pytest运行了2个测试套件(称为A和B):
python -m pytest -c configfile -s -v A
python -m pytest -c configfile -s -v B
Suite B(只有那个)测试我们的PyQt组件; A中没有任何PyQt。我们在Jenkins(版本1.658 btw)中定义了项目A以运行套件A:它在Jenkins中运行没有问题。我们做了同样的事情,在Jenkins中定义了一个项目B来运行Suite B:这个在经过多次测试后间歇性地失败,带有来自Qt的SYSTEM日志消息和WARNING日志消息(通过QtCore.qInstallMessageHandler()
设置处理程序捕获)。捕获测试套件B的标准的Jenkins日志是:
SYSTEM log message from Qt: WindowCreationData::create: CreateWindowEx failed (Not enough storage is available to process this command.)
WARNING log message from Qt: Failed to create platform window for QWidgetWindow(0x705d260, name="FramedPartWidgetWindow") with flags QFlags<Qt::WindowType>(Window|WindowTitleHint|WindowSystemMenuHint|WindowMinMaxButtonsHint|WindowCloseButtonHint|WindowFullscreenButtonHint) (context: category=default)
Build step 'Execute Windows batch command' marked build as failure
最后一行是由运行测试套件B的Jenkins脚本输出的。
在运行测试套件的Jenkins机器(Windows 7 Pro 64位平台,顺便说一句)上,我可以打开Windows命令shell,如果我从那里运行测试套件,两个测试套件都可以正常运行。然后我打开一个Web浏览器,转到套件B的Jenkins项目页面并单击&#34;立即构建&#34;:这运行与从命令shell运行的相同,但我得到了上述错误。如果我做了10次构建,每次都会进行不同的测试,尽管总是在同一个区域内#34;如果我在故障发生的地方过滤掉测试,测试会进一步运行,但是在以这种方式删除4个测试类之后,这将不再有用。
问题不是桌面问题,因为我已登录。命令shell运行与Jenkins运行之间的一个区别是来自shell,测试套件B打开许多(PyQt)窗口并关闭它们。从詹金斯,我看不到任何窗户打开,所以他们似乎在一些虚拟&#34;虚拟&#34;桌面。所以可能是桌面问题。我是否需要以某种方式配置虚拟桌面以获得更大的图形容量?
错误似乎表明Jenkins启动的进程耗尽了一些资源,但不清楚是什么:有足够的驱动器空间和内存。
任何人都知道从哪里开始?我做了一个谷歌搜索,我能找到的就是这些,虽然我会尝试这些建议,但它们看起来并不太有希望:
我不熟悉Windows上的Jenkins服务如何运行流程的复杂性,所以我不知所措。
更新20161219 :显然,这是Windows服务中GUI测试的已知问题,请参阅my post on Bitnami Jenkins forum。
答案 0 :(得分:0)
显然,这是来自Windows服务see my post on Bitnami Jenkins forum的GUI测试的已知问题,就像我们使用的bitnami jenkins堆栈一样。正如我在该帖子中提到的那样,页面底部https://wiki.jenkins-ci.org/display/JENKINS/Tomcat表示,当使用Tomcat作为安装为服务的容器安装Jenkins时,Windows中的GUI测试不太可行。唯一的选择似乎是设置Tomcat使用Windows Scheduler(而不是服务)运行,但不幸的是我们用于jenkins的bitnami堆栈似乎不允许这样,所以我们唯一的解决方案是从头开始安装jenkins和tomcat作为预定任务。
似乎在Windows上(基于设置Jenkins通过Squish测试GUI的文档),
This page似乎汇总了与此问题相关的几个帖子。