告诉Travis跳过测试,但继续将它包含在我的主要测试套件中?

时间:2015-06-16 12:08:00

标签: django travis-ci

我正在使用Django 1.8,我有一个管理命令,可以对我的数据库中的某些项进行地理编码,这需要互联网连接。

我已为此管理命令编写了测试。但是,测试运行脚本,因此它还需要Internet连接。

将测试推送到GitHub后,我的CI被破坏了,因为Travis没有外部互联网连接,所以它在这个测试中失败了。

我想保留此测试,并且我希望在本地运行时继续将其包含在python manage.py test中。

但是,有没有办法让我明确告诉Travis不要为这个特定的测试而烦恼?

或者,还有其他一些干净的方法,我可以将此测试作为我的主要测试套件的一部分,但是阻止它打破Travis?

2 个答案:

答案 0 :(得分:11)

也许您可以使用@unittest.skipIf(condition, reason)修饰您的测试,以测试是否存在Travis CI specific environment variable以跳过它。例如:

import os
...
@unittest.skipIf("TRAVIS" in os.environ and os.environ["TRAVIS"] == "true", "Skipping this test on Travis CI.")
def test_example(self):
  ...

答案 1 :(得分:0)

如果外部资源是HTTP端点,则应考虑使用vcrpy来记录和重播HTTP请求/响应。

这样您就可以在不同的环境中继续运行相同的测试套件。它也会加速这项测试。