2017-12-12 7 views
0

スニファと一緒にPylintとNoseを使用して、すべての保存時にPythonアプリケーションをテストしてテストします。これは、あなたがここにhttps://pypi.python.org/pypi/sniffer更新されたソースファイルを使用していないスニファを使用しているPylint

はスニファ

ここ
from sniffer.api import * # import the really small API 
from pylint import lint 
from subprocess import call 
import os 
import nose 

@runnable 
def zimmer_tests(*args): 
    command = "nosetests some_module/test --nologcapture --with-coverage --cover-config-file=zimmer_coverage_config" 

    lint.Run(['some_module/app'], exit=False) 
    return call(command, shell=True) == 0 

、最初lint.Run()実行が私のアプリでpylintのためscent.pyファイルからnosetestsとpylintを実行するための実行可能な責任があるに気付いていない場合にはスニファです。その後、アプリケーションでnosetestが実行されるcall()

ファイルを保存した後、nosetestsをファイルの更新版で実行した後、Pylintは同じ古いバージョンを使用します。私は、ファイルの新しいバージョンを取得するために、毎回スニファを再起動する必要があります。

nosetestsが毎回新しいバージョンのファイルを取得できるため、これはスニファの設定の問題ではないと見なします。それでも私は確信していません。

私のpylintrcファイルは、生成コマンドpylint --generate-rcfile > .pylintrcからほとんど同じものですが、いくつかの小さなアプリケーション固有の調整があります。

+1

です。インポートされたものがあれば、それは2回目のインポート時にキャッシュされ、キャッシュから取得されます。一方、ノードは自身のプロセスとして起動され、毎回空のモジュールキャッシュから開始されます。コマンドラインでもpylintを開始したいかもしれません。 @KlausD。 –

+0

どうもありがとう!コマンドラインから直接呼び出すことができました! – penguin2048

答えて

0

@KlausDが指している。コメントでは、lint.Run()は、実行中のプロセスから呼び出されたときにキャッシュからファイルを使用していました。コマンドラインからpylintを呼び出すことは期待通りに機能しました。ここで

は、あなたがまだ実行中のプロセスでpylintを実行している変更されたコード

@runnable 
def zimmer_tests(*args): 
    command_nose = "nosetests some_module/test --nologcapture --with-coverage --cover-config-file=zimmer_coverage_config" 
    command_lint = "pylint some_module" 
    call(command_lint, shell=True) 
    return call(command_nose, shell=True) == 0 
関連する問題