为什么我的Selenium测试在Travis-CI上无代码更改后失败,而本地通过?
我在调试一个selenium测试时遇到了困难,这个测试在本地运行没问题,但在travis上却失败了。
根据travis的构建日志,它在构建#311时通过了,但在构建#312时开始失败,显然是因为一些提交e6ee7de08800...7617088b4ba6,这些提交只包含了一个新的语言文件(.po)和版本更新。
但是,selenium测试在本地是通过的。你可以试试看:
AUTOCOMPLETE_LIGHT_VERSION="master"
CITIES_LIGHT_VERSION="master"
rm -rf autocomplete_light_env/
virtualenv autocomplete_light_env
source autocomplete_light_env/bin/activate
pip install selenium
pip install -e git+git://github.com/yourlabs/django-cities-light.git@$CITIES_LIGHT_VERSION#egg=cities_light
pip install -e git+git://github.com/yourlabs/django-autocomplete-light.git@$AUTOCOMPLETE_LIGHT_VERSION#egg=autocomplete_light
cd autocomplete_light_env/src/autocomplete-light/test_project
pip install -r requirements.txt
./manage.py test autocomplete_light
它会输出类似这样的内容:
----------------------------------------------------------------------
Ran 49 tests in 22.990s
OK
Destroying test database for alias 'default'...
也许travis-ci上有问题?我也不知道。任何帮助都很欢迎 B)
1 个回答
2
因为Django的Selenium测试使用了多线程,所以网页服务器和测试运行是异步进行的,也就是说它们可以同时进行,不会互相影响。
Travis-ci因为太成功了,反而遇到了一些问题,因此需要增加请求之间的等待时间来解决构建的问题。
-- 编辑 --
我在使用django-session-security 2.0.0时也遇到了同样的问题,不过我发现了一个有趣的模式,它能在travis上正常工作。基本上,就是“等待”事情发生,而不是“先睡一会再期待”。