2013-03-01 17 views
20

私はちょうど私が私のdjangoプロジェクトに大きな変更を加えた後、たびにpython manage.py testを実行しています。プロジェクトでファイルを変更して保存するときに、これらのテストを自動的に実行することは可能ですか?それ以前のバグを検出すると便利です(私はレールがrspecのようなものを持っていることを知っています)。私は鼻とdjango - 鼻を使用しています。前もって感謝します。私のプロジェクト(Django)に変更があったときにテストを自動的に実行する方法は?

+1

[このプロジェクト](https://pypi.python.org/pypi/nosy)は、コミットではなくコードの変更でテストスイートを実行する場合に役立ちます。 – Matt

+0

チップをありがとう、私は瞬間のために必要なもののように見えます。ちょっと鼻が簡単にジャンゴ鼻に追加できるかどうかを偶然に知っていますか(プラグインのように:[django-nose短い説明](https://github.com/jbalogh/django-nose#custom-plugins) ))? – user1011444

+0

可能な複製[Python unittestsのための 'autotest'のようなものがありますか?](http://stackoverflow.com/questions/108892/is-there-something-like-autotest-for-python-unittests) – mlt

答えて

-3

Jenkinsのような継続的な統合サーバーが必要です。

+0

ありがとう回答。私はセレンを使用するときにそれを確かにチェックします。今のところ、私はちょうどDjangoに同梱されている '偽の'サーバーを使って基本テストを行います。 – user1011444

+0

JenkinsはSeleniumとは何の関係もありません。通常の単体テストで簡単に使用できます。 –

+1

[django-jenkins'](https://github.com/kmmbvnr/django-jenkins)プロジェクトについてここで言及します。 –

0

Django SupervisorをDjangoの上に使用できます。これは、CIツールの使用を避けます(いずれの場合にも便利ですが、これは他の応答を無効にするものではありません)。

7

のようなものに使用さwatchrよ!プラグインをインストールし、--with-watchオプションを指定してテストを実行してください。

更新:。:(ジャンゴ・鼻のmanage.pyヘルパーからテストを実行するとき、うまく動作していないよう

結局、私は少しを必要とするかもしれませんが、ジャンゴをサポートする、tdaemonを使用することにしました本格的なプロジェクトのためだけでなくいじる私はDjangoプロジェクトのためにそれを実行したか、ここで例えば

は、次のとおりです。

tdaemon -t django --custom-args=a_specific_app_to_test -d --ignore-dirs logs 

--custom-argsがSにテストを集中することでした特定のアプリケーションと同じ(python manage.py test a_specific_app_to_test

引数はデバッグログを有効にするためのもので、実行をトリガーするファイル変更を出力します。

私のテストがログに書いた(それ自体が問題です)tdaemonは無限ループに入ったので、--ignore-dirsが必要でした。

8

私はJavaScript開発者ですので、JS開発者がNode.jsで構築したツールを使用して、私のプロジェクトで同じ目標を達成しました。非常にシンプルですが、nodeJSをインストールして動作させる必要があります。

私は私のプロジェクトのルートディレクトリにgruntfile.jsと呼ばれるファイル作成:基本的にはPYの拡張子を持っており、彼らが変更された場合、それはシェルコマンドを実行し、そのディレクトリ内のファイルを見ているそれは何やっている

//gruntfile.js 
module.exports = function(grunt) { 

    grunt.initConfig({ 
    watch: { 
     files: ['*.py'], 
     tasks: ['shell'] 
    }, 
    shell: { 
     test: { 
     command: 'python main_test.py' 
     } 
    } 
    }); 

    grunt.loadNpmTasks('grunt-contrib-watch'); 
    grunt.loadNpmTasks('grunt-shell'); 

    grunt.registerTask('default', ['watch']); 
}; 

をこの場合は私のPythonテストです(あなたはそれを変更したいかもしれません、私のテスト名はmain_test.pyでした)。このgruntスクリプトを実行するには、Node.jsをインストールする必要があります。その後、グローバルパスにnpmがあります。その後、いくつかのノードモジュールもインストールする必要があります。 grunt-cliを除くこれらのモジュールはすべてあなたの現在のフォルダに保存されるので、あなたがプロジェクトのルートにいるか、それともgruntfile.jsを置いたフォルダにいるのかを確認してからfallowingコマンドを実行してください。

npm install grunt-cli -g 
npm install grunt 
npm install grunt-contrib-watch 
npm install grunt-shell 

これは非常に小さいモジュールです。これですべての設定が完了しました。gruntを実行するとpyファイルの監視が開始され、保存したらテストが実行されます。私はJavaScriptの開発者だと言いましたが、Gruntは他の言語であってもテストを実行する非常に簡単な方法を提供していると私は考えています。

1

私はgulpを使ってこれを行いました。

var shell = require('gulp-shell') 

gulp.task('run-tests', shell.task([ 
    'python3 manage.py test'])) 

gulp.task('watch', function(){ 
    gulp.watch(['./your-project-name/**/*.html', './your-project-name/**/*.py'], ['run-tests']); 
}); 

gulp.task('default',['run-tests','watch']); 

をそして、それはいつでもテストを実行するすべての.pyまたは.htmlファイルに保存された変更があります

npm install gulp-shell --save-dev  

そしてgulpfile.jsには:ゴクゴクシェルをインストール!

16

使用entr

$ find . -name '*.py' | entr python ./manage.py test 

あるいは、余分な信用のため、ackとそれを組み合わせる:あなたはあなたがそれらを追加すると、それも新しいファイルを検索したい場合は

$ ack --python | entr python ./manage.py test 

$ until ack -f --python | entr -d python ./manage.py test; do sleep 1; done 
+4

シルバーサーチャーを使用している場合は、「ack -f --python」を「ag -l-python」に変更してください。 – c17r

+1

[The Silver Searcher ](http://geoff.greer.fm/ag/)、チップをありがとう! – clacke

+2

'entr'について聞いたことがありません。それは私が探していたものよりもさらに便利です。ありがとう:) – jorgemdnt

5

py.test answ ER:

pip install pytest-xdist 
py.test -f # will watch all subfolders for changes, and rerun the tests 
+0

鼻はもはや維持されておらず、py.testはちょうどオハイオ州にあるので、はるかに優れており、とにかくもっとpythonicです。 –

0

私はdjango-nosesnifferを設定することをお勧めします。それはセットアップが非常に簡単で、うまく機能します。 this scent.pyの行に沿った何かが私が必要とした唯一のカスタマイズでした。次に、sniffer -x myapp.testsを実行するだけです。

ノーズには、テストを少しうまく使いこなせるいくつかの良いものが付属しています。

1

もう1つのJavascriptデベロッパー、nodemonhttps://github.com/remy/nodemon)がうまく機能することがわかりました。デフォルトでは*.jsのファイルを監視しますが、これは--extフラグで設定できます。これを使用するには、実行します。*.pyファイルの変更は、それはあなたのコマンドを再実行しますたび

npm install -g nodemon 
cd /your/project/dir/ 
nodemon --ext py --exec "python manage.py test" 

、。それは新しいファイルを見つける。

+0

私はこれが好きです。非常にきれいな。 – Kazanz

関連する問題