52

現時点python manage.py testでは、djangoプロジェクトに大幅な変更を加えた後、たまに実行しています。プロジェクトでファイルを変更して保存するたびに、これらのテストを自動的に実行することはできますか?バグを早期に検出すると便利です(railsにはrspecでこのようなものがあることを私は知っています)。私は鼻とdjango-noseを使用しています。前もって感謝します。

4

15 に答える 15

10

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

プロジェクトのルート ディレクトリに gruntfile.js というファイルを作成しました。

//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']);
};

それが行っていることは、基本的にそのディレクトリ内の py 拡張子を持つファイルを監視し、それらが変更された場合、この場合は私の python テストであるシェル コマンドを実行することです (変更したい場合があります。私のテスト名は main_test.py でした)。この grunt スクリプトを実行するには、Node.js をインストールする必要があります。その後、グローバル パスに npm が含まれます。その後、いくつかのノード モジュールもインストールする必要があります。grunt-cli を除くこれらのモジュールはすべて現在のフォルダーに保存されるため、プロジェクトのルートまたは gruntfile.js を配置したフォルダーにいることを確認してから、次のコマンドを実行します。

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

サイズは気にしないでください。これらは非常に小さなモジュールです。すべての設定が完了したので、簡単に実行できgruntます。py ファイルの監視が開始され、保存するとテストが実行されます。Python テストを実行するための最良の方法ではないかもしれませんが、私が JavaScript 開発者であると述べたように、Grunt は他の言語でもテストを実行するための非常に簡単な方法を提供していると思うので、それを使用します。

于 2015-07-12T05:53:14.267 に答える
4

私はウォッチャーのようなもの、ウォッチャーを使用しています

于 2013-11-28T04:58:33.597 に答える
2

私はgulpを使用してこれを行いました。gulp シェルをインストールします。

npm install gulp-shell --save-dev    

そして gulpfile.js で:

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 ファイルに保存された変更があるときはいつでもテストを実行します!

于 2015-10-09T00:49:15.310 に答える
1

Django上でDjango Supervisorを使用できます。これにより、CI ツールの使用が回避されます (これはいずれの場合にも役立つ可能性があります。これは、他の応答を無効にするものではありません。おそらく補完的なものです)。

于 2013-03-07T03:12:46.303 に答える
-5

Jenkinsのような継続的インテグレーション サーバーが必要です。

于 2013-03-01T20:44:17.903 に答える