如何让 Travis CI 安装 Python 在 tests_require 中声明的依赖项?
How to make Travis CI to install Python dependencies declared in tests_require?
我有 Python 个包裹 setup.py
。它具有在 install_requires
中声明的常规依赖项和在 tests_require
中声明的开发依赖项,例如flake8
.
我认为 pip install -e .
或 运行 python setup.py test
也会安装我的开发依赖项,它们将可用。但是,显然它们不是,我很难正确设置我的 Travis CI 构建。
install:
- "pip install -e ."
script:
- "python setup.py test"
- "flake8"
如上配置的构建将失败,因为找不到 flake8
作为有效命令。我还尝试从 python setup.py test
命令内部调用 flake8
(通过 subprocess
),但也没有成功。
我也讨厌 flake8
不能轻易成为 python setup.py test
命令的组成部分,但那是另一回事了。
我更喜欢将大部分配置保留在 tox.ini
中并依靠它来安装 运行 什么是 运行。对于测试,我使用 pytest
(可以修改解决方案以轻松使用其他测试框架)。
使用了以下文件:
tox.ini
: 自动化测试
.travis.yml
:Travis 的说明
setup.py
: 安装测试包的安装脚本
test_requirements.txt
: 测试要求列表
tox.ini
[tox]
envlist = py{26,27,33,34}
[testenv]
commands =
py.test -sv tests []
deps =
-rtest-requirements.txt
.travis.yml
sudo: false
language: python
python:
- 2.6
- 2.7
- 3.3
- 3.4
install:
- pip install tox-travis
script:
- tox
test_requirements.txt
只是普通的需求文件,其中包含您需要的一切(例如 flake8
、pytest
和其他依赖项)
您可能会在 https://github.com/vlcinsky/awslogs/tree/pbr-setup.py
看到示例
它在 pbr
、coverage
和 coverall
中使用的事实与我的回答无关(无论是否使用 pbr,它都适用)。
更直接的回答是pip install
不会安装tests_require
,故意把运行时间要求和测试要求分开。 python setup.py test
为 运行 中的测试创建一个类似 virtualenv 的环境,然后取消执行此操作。 flake8
因此一旦完成就无法使用。
Flake8 有 setuptools integration and also integrates with pytest if you use that. pytest itself also integrates with setuptools.
我有 Python 个包裹 setup.py
。它具有在 install_requires
中声明的常规依赖项和在 tests_require
中声明的开发依赖项,例如flake8
.
我认为 pip install -e .
或 运行 python setup.py test
也会安装我的开发依赖项,它们将可用。但是,显然它们不是,我很难正确设置我的 Travis CI 构建。
install:
- "pip install -e ."
script:
- "python setup.py test"
- "flake8"
如上配置的构建将失败,因为找不到 flake8
作为有效命令。我还尝试从 python setup.py test
命令内部调用 flake8
(通过 subprocess
),但也没有成功。
我也讨厌 flake8
不能轻易成为 python setup.py test
命令的组成部分,但那是另一回事了。
我更喜欢将大部分配置保留在 tox.ini
中并依靠它来安装 运行 什么是 运行。对于测试,我使用 pytest
(可以修改解决方案以轻松使用其他测试框架)。
使用了以下文件:
tox.ini
: 自动化测试.travis.yml
:Travis 的说明setup.py
: 安装测试包的安装脚本test_requirements.txt
: 测试要求列表
tox.ini
[tox]
envlist = py{26,27,33,34}
[testenv]
commands =
py.test -sv tests []
deps =
-rtest-requirements.txt
.travis.yml
sudo: false
language: python
python:
- 2.6
- 2.7
- 3.3
- 3.4
install:
- pip install tox-travis
script:
- tox
test_requirements.txt
只是普通的需求文件,其中包含您需要的一切(例如 flake8
、pytest
和其他依赖项)
您可能会在 https://github.com/vlcinsky/awslogs/tree/pbr-setup.py
看到示例它在 pbr
、coverage
和 coverall
中使用的事实与我的回答无关(无论是否使用 pbr,它都适用)。
更直接的回答是pip install
不会安装tests_require
,故意把运行时间要求和测试要求分开。 python setup.py test
为 运行 中的测试创建一个类似 virtualenv 的环境,然后取消执行此操作。 flake8
因此一旦完成就无法使用。
Flake8 有 setuptools integration and also integrates with pytest if you use that. pytest itself also integrates with setuptools.