如何让Travis CI安装在tests_require中声明的Python依赖项?

时间:2016-01-27 20:45:42

标签: python testing travis-ci setup.py

我有setup.py的Python包。它具有在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将不会被发现为有效命令。我还尝试从flake8命令(通过python setup.py test)内部调用subprocess,但也没有成功。

另外,我讨厌flake8不能轻易成为python setup.py test命令的组成部分的事实,但这是另一个故事。

2 个答案:

答案 0 :(得分:12)

我更喜欢将大部分配置保留在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

只是普通的需求文件,其中包含您需要的内容(例如flake8pytest和其他依赖项)

您可以在https://github.com/vlcinsky/awslogs/tree/pbr-setup.py

看到示例

它在pbrcoveragecoverall使用的事实与我的回答无关(无论是否有效)都可以使用。

答案 1 :(得分:1)

更直接的答案是pip install不会安装tests_require,故意将运行时要求与测试要求分开。 python setup.py test创建了一个类似virtualenv的环境来运行测试,之后不再执行此操作。 flake8一旦完成就无法使用。

如果你使用它,Flake8有setuptools integrationintegrates with pytest。 pytest本身also integrates with setuptools

相关问题