web-dev-qa-db-ja.com

setup.pyのないプロジェクトでtoxを実行するにはどうすればよいですか?

私のアプリケーションは2つの異なるPython=バージョンをサポートする必要があるため、toxを使用して2つのvirtualenvでユニットテストを実行します。

私の問題は、toxにはsetup.pyが必要なことですが、私のアプリケーションはモジュールではなく、独自のインストーラーがあるため、何も持っていません。とりあえず、setup.pyで作業するためにインストールプロセスを自動化する煩わしさを感じたくないので、setup.pyを記述せずに単体テストを実行したいだけです。

それは可能ですか?または、単に何もしない「空の」setup.pyを作成するにはどうすればよいですか?この件に関するいくつかのドキュメントを教えていただけますか(distutilsのドキュメントには、空のドキュメントではなく、意味のあるsetup.pyの記述方法が説明されています)?

60
Kjir

ソースコードを掘り下げた後、sdistをスキップするtox.iniにほとんど文書化されていないオプションを見つけました:

[tox]
skipsdist = BOOL    # defaults to false

これをTrueに設定すると、必要なものが得られ、意味のあるsetup.pyを書く手間が省けます

80
Kjir

アプリケーションがある場合(requirements.txt)、あなたが配布しようとしているプロジェクトではなく(setup.py代わりに)、あなたのtox.iniは次のようになります。

[tox]
skipsdist = True

[testenv]
deps = -r{toxinidir}/requirements.txt

この答えは、David Murphyのブログから最初に見つかりました: http://blog.schwuk.com/2014/03/19/using-tox-Django-projects/

40
Ceasar Bautista

これは、複数の設定によるDjangoプロジェクトのtox.iniファイルの内容です。

[tox]
envlist = py36-{accounting,content,media}_settings
skipsdist = true

[testenv]
commands = python {toxinidir}/manage.py test
deps = -r{toxinidir}/requirements.txt

setenv =
    accounting_settings: Django_SETTINGS_MODULE=my_project.settings.accounting
    contents_settings: Django_SETTINGS_MODULE=my_project.settings.contents
    media_settings: Django_SETTINGS_MODULE=my_project.settings.media
1
M.javid