3

並行して実行したい数千のテストがあります。テストはすべて、0 またはゼロ以外のリターン コード (失敗した場合) を返すコンパイル済みバイナリです。それらのいくつかの未知のサブセットは、同じリソース (ファイル、ポートなど) を使用しようとします。各テストは、独立して実行されていることを前提としており、リソースが利用できない場合は失敗を報告するだけです。

サブプロセス モジュールを使用して各テストを起動するために Python を使用しています。並列化のために Nose を調べましたが、テストを自動生成する必要があり (1000 以上のバイナリのそれぞれをサブプロセスを使用する Python クラスにラップするため)、Nose のマルチプロセッシング モジュールは自動生成されたテストの並列化をサポートしていません。

最終的に PyTest に落ち着きました。これは、xdist プラグインを使用して SSH 経由でリモート ホスト上で自動生成されたテストを実行できるためです。

しかし、私が知る限り、xdist がテストの配布方法を制御する機能をサポートしているようには見えません。N 台のマシンのプールを提供し、マシンごとに 1 つのテストを実行したいと考えています。

私が望むことは PyTest/xdist で可能ですか? そうでない場合、私が探していることを実行できるツールはありますか?

4

1 に答える 1

0

これが役立つかどうかはわかりません。ただし、事前にテストを分割する方法がわかっている場合は、pytest にテストを配布させる代わりに、継続的インテグレーション サーバーを使用して、異なるマシンごとに異なる pytest の実行を呼び出すことができます。-k または -m を使用してテストのサブセットを選択するか、単に別のテスト ディレクトリ パスを指定するだけで、どのテストを一緒に実行するかを制御できます。

于 2014-08-01T05:23:29.530 に答える