1

ディレクトリのリストを使用して、scons に NOSETESTS を呼び出させたいと考えています。これを行う最良の方法は何ですか?

4

2 に答える 2

3

外部アプリケーションの戻りコードを分析する必要がある場合 (たとえば、テストを呼び出す場合)、Command() + python サブプロセス モジュールを使用する必要があります。コマンドのみを使用すると、アプリケーションのリターン コードを取得できません。

例えば:

if 'test' in COMMAND_LINE_TARGETS:
    runTestsCmd = env.Command('runTests', None, Action(runTests, "Running tests"))
    AlwaysBuild(runTestsCmd)
    Alias('test', runTestsCmd)

runTests 関数の例:

def runTests(target = None, source = None, env = None) :
    # fill args
    retCode = subprocess.call(args, env = env['ENV'], cwd = cwd, shell = True)
    Exit(retCode)

また、runTestsCmd に追加の依存関係を設定することもできます。

Depends(runTestsCmd, [appAndLibsToBuild])
于 2012-05-30T13:06:10.833 に答える
1

私はノーズ フレームワークを知りませんが、次のように SCons で外部アプリケーションを実行する方法が 2 つあります (Python で実行する方法は他にもありますが、それらについて言及する必要はありません)。

  • Execute () - SConscript ファイルの分析中に常に実行します
  • Command () - ターゲットのように機能し、その依存関係に従ってのみ実行されます

Command() オプションを使用して、関連する依存関係のいずれかが変更された場合にのみ単体テストを起動することをお勧めします。

ディレクトリのリストに関しては、次のような python プログラミングを使用できます。

dirs = ['dir1', 'dir2', 'dir3']
for dir in dirs:
   cmd = 'theScriptToExecute $SOURCE $TARGET'
   env.Command(target = 'whatever', source = dir, action = cmd)
于 2012-05-30T12:39:02.900 に答える