2016-01-27 7 views
5

私はsetup.pyのPythonパッケージを持っています。 install_requiresで宣言された規則的な依存関係と、tests_requireで宣言された開発依存関係を持ちます。 flake8tests_requireで宣言されているPython依存関係をインストールするTravis CIを作る方法は?

私はpip install -e .と思っていましたか、またはpython setup.py testを実行すると開発依存関係がインストールされ、利用可能になります。しかし、明らかに彼らはそうではないと私はトラビスCIのビルドを正しく設定するのに苦労しています。

install: 
    - "pip install -e ." 
script: 
    - "python setup.py test" 
    - "flake8" 

flake8が有効なコマンドとして発見されることはありませんので、上記のように構成されたビルドは、失敗します。また、python setup.py testコマンドの内側から(subprocess経由で)flake8を呼び出そうとしましたが、成功もありませんでした。

また、私はflake8python setup.py testコマンドの不可欠な部分に簡単に加えることはできませんが、それは別の話です。

答えて

10

ほとんどの設定をtox.iniに保存し、実行するものをインストールして実行することをお勧めします。テストのために私はpytestを使用します(ソリューションは他のテストフレームワークを簡単に使用するように変更できます)。

ファイルが使用されている次のとおりです。

  • tox.ini:トラヴィス
  • setup.pyするための手順:
  • test_requirements.txtをテストするために、パッケージをインストールするためのインストールスクリプト:テスト
  • .travis.ymlを自動化するための要件のリストテスト

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

あなたがそこに必要な、これまで何whith普通の要件ファイル(例えば、 flake8pytestおよび他の依存関係)

あなたは(それがまたはPBRせずに動作します)、それはそこにpbrcoveragecoverallを使用して、実際には私の答えに関連しないhttps://github.com/vlcinsky/awslogs/tree/pbr-setup.py

でサンプルを見ることができます。

+0

おそらくこれまでのところ、これは最善の解決策です。 FWIW、野生でも見たことは 'setup.py'に' pip install -e。[tests] 'と一緒に' extras_require'を使うことです。 DRYを維持し、extras_require ['tests'] 'と' tests_require'の両方に割り当てられた別個のリストとしてテスト要件を定義することも簡単です。 (たとえば、マイライブラリhttps://github.com/honzajavorek/fiobank/をご覧ください) –

0

pip installは、tests_requireをインストールせず、ランタイム要件とテスト要件を意図的に分離します。 python setup.py testは、テストを実行するためのvirtualenvのような環境を作成し、後で実行します。したがって、完了したらflake8は利用できません。

Flake8にはsetuptools integrationintegrates with pytestがあります。 pytestそれ自身also integrates with setuptools