2017-03-23 3 views
3

私はこのようなディレクトリとファイルの構造を持っている:複数のVUnit run.pyファイルを1つのVUnit実行に結合する方法は?

vunit_multi/ 
    alfa/ 
     run.py 
     ... 
    bravo/ 
     run.py 
     ... 

VUnit run.pyを個別に実行することができます。

これらの複数の別々のVUnit実行を、結合されたステータスレポートを使って1回の実行に組み合わせる良い方法はありますか?

+3

これはGitubのサイトからリンクされているVUnitのGitterチャンネルでよく聞かれるでしょう。それは非常に良いサポートチャンネルです。 –

+0

@BrianDrummond:ありがとう、私はそれを見ていきます。 – EquipDev

+1

VUnitチームがお手伝いできる場合は、自分の解決策を自己回答として報告してください。 – Paebbels

答えて

3

下部の文が最後の3行が実行されることを意味している場合さて、この

from os.path import join, dirname 
from vunit import VUnit 

def create_test_suite(prj): 
    root = dirname(__file__) 
    lib = prj.add_library("alfa_lib") 
    lib.add_source_files(join(root, "*.vhd")) 

if __name__ == '__main__': 
    prj = VUnit.from_argv() 
    create_test_suite(prj) 
    prj.main() 

ザ・にスクリプトを配置し、この

from os.path import join, dirname 
from vunit import VUnit 

prj = VUnit.from_argv() 

root = dirname(__file__) 
lib = prj.add_library("alfa_lib") 
lib.add_source_files(join(root, "*.vhd")) 

prj.main() 

のようになりますのは、あなたのアルファを言ってみましょうし、実行するスクリプトをブラボーファイルがスクリプトとして呼び出された場合(これを使用してalfaをテストすることはできますが)、ファイルが別のスクリプトにモジュールとしてインポートされている場合は使用できません。

今、トップレベルのディレクトリにこの(vunit_multi

from os.path import join, dirname 
from vunit import VUnit 
from glob import glob 
import imp 

def create_test_suites(prj): 
    root = dirname(__file__) 
    run_scripts = glob(join(root, "*", "run.py")) 

    for run_script in run_scripts: 
     file_handle, path_name, description = imp.find_module("run", [dirname(run_script)]) 
     run = imp.load_module("run", file_handle, path_name, description) 
     run.create_test_suite(prj) 
     file_handle.close() 

prj = VUnit.from_argv() 
create_test_suites(prj) 
prj.main() 

create_test_suitesのような新しい実行スクリプトがすべて実行されるスクリプトを検索し、それらのスクリプトを反復します置きます。各スクリプトファイルは、create_test_suite機能にアクセスするためのモジュールとしてインポートされます。このトップレベルスクリプトで作成されたprjで関数が呼び出され、モジュールに指定されたライブラリとファイルが追加されます。

トップレベルスクリプトを実行すると、すべてのモジュールテストベンチが表示されます。

注:使用できるimpより新しいモジュールがありますが、impも古いPythonバージョンで動作します。

+1

答えの一番下にある「imp」の注釈を展開するには、Python 3.4以降で使用するのに適したモジュールは 'importlib'です https://docs.python.org/3/library/importlib.html#module -importlib – Aaron

関連する問題