检测代码何时在 Travis CI 上运行

Detecting when code is run on Travis CI

提问人:ArekBulski 提问时间:8/23/2016 最后编辑:ArekBulski 更新时间:4/11/2020 访问量:1449

问:

我有一个鼻子测试,它使用 tests 目录中 png 文件的路径名。一条路径适用于本地测试,一条路径适用于 Travis。如何检查代码何时在 Travis 上运行?

编辑:这是实际代码。

Python 连续集成 travis-ci 鼻子

评论


答:

6赞 rkersh 8/23/2016 #1

您可以检查环境变量是否存在(或值)。看起来 Travis 默认定义了几个(见这里)。

例如:

import os
istravis = os.environ.get('TRAVIS') == 'true'

评论

1赞 rkersh 8/23/2016
文档说这是默认设置。根据您想要的偏执程度,您可以检查该值是否实际为“true”。我举了这个例子来说明这一点。在这里使用默认值“false”可能会更好。TRAVIS=trueos.getenv
0赞 Nakilon 11/9/2019
还要考虑查看同一文档中提到的 和 变量。CICONTINUOUS_INTEGRATION
18赞 Laurent LAPORTE 8/23/2016 #2

要检查 TRAVIS 是否存在,请执行以下操作:

import os
is_travis = 'TRAVIS' in os.environ
1赞 RayLuo 4/11/2020 #3

事后看来,上面所有的答案都是正确的。然而,我还想记录另一个浪费了我生命数小时的原因。

如果您碰巧维护了一个使用流行的 tox 来编排测试的代码库,您可能不知道以下 tox 行为

默认情况下,tox 只会将 PATH 环境变量(在 windows 上为 SYSTEMROOT 和 PATHEXT)从 tox 调用传递到测试环境。如果要传递其他环境变量,可以使用 passenv 选项:

[testenv]
passenv = TRAVIS

评论

1赞 mdurant 9/23/2020
是的,小时。显然,仅仅满足 env 是不够的,如果你在调用 tox 之前这样做......