在Travis CI上使用lettuce + splinter和selenium进行测试时建立超时



我有大约130个生菜测试,在本地运行良好,但当travis运行它们时,它在几次测试后挂起。

这里的测试在第8个场景中失败:https://travis-ci.org/h3/django-editlive/jobs/3945466

当我删除最后一个场景时,它通过:https://travis-ci.org/h3/django-editlive/builds/3945648

我试着把我的测试分成不同的功能文件,同样的问题。

这似乎不是由一个特定的场景引起的,而是由运行的场景数量引起的。

根据Travis' s docs:

  • 等待键盘输入或其他类型的人机交互
  • 并发问题(死锁、活锁等)
  • 安装需要很长时间编译的本地扩展

我能看到的唯一可能性是并发问题。但是我怎么调试它呢?

我的项目是开源的,所以整个源代码可以在这里获得:

  • https://github.com/h3/django-editlive
  • lettuce-features

关于这个问题我没有明确的答案,但我设法解决了。

由于没有任何输出,所以我尝试跟踪我的测试,以便我可以准确地看到它挂起的位置。

但strace输出是大手被特拉维斯修剪…所以我必须用grep -v命令来处理一些行

这是在我的。travis中的样子。yml文件:

script:
  - "strace -q python project/manage.py harvest 2>&1 | grep -v ENOENT"

enent代表"没有这样的文件或目录",我真的不需要它来理解字符串输出,它切断了足够的行,让我看到它挂在哪里。

原来它挂在一个请求硒:

socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 4
connect(4, {sa_family=AF_INET, sin_port=htons(35146), sin_addr=inet_addr("127.0.0.1")}, 16) = 0
send(4, "POST /hub/session/e7cba641-2842-"..., 359, 0) = 359

我真的不能代替硒,所以我大胆猜测,用谷歌chrome代替火狐来运行我的测试。瞧。测试运行正常。

很糟糕,我还没有真正解决这个问题,但在travis ci上远程调试最多是一个PITA。每次迭代之间有35分钟的等待时间,我有更重要的事情要做。

最新更新