私はこのようなディレクトリとファイルの構造を持っている:複数のVUnit run.pyファイルを1つのVUnit実行に結合する方法は?
vunit_multi/
alfa/
run.py
...
bravo/
run.py
...
VUnit run.py
を個別に実行することができます。
これらの複数の別々のVUnit実行を、結合されたステータスレポートを使って1回の実行に組み合わせる良い方法はありますか?
私はこのようなディレクトリとファイルの構造を持っている:複数のVUnit run.pyファイルを1つのVUnit実行に結合する方法は?
vunit_multi/
alfa/
run.py
...
bravo/
run.py
...
VUnit run.py
を個別に実行することができます。
これらの複数の別々のVUnit実行を、結合されたステータスレポートを使って1回の実行に組み合わせる良い方法はありますか?
下部の文が最後の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バージョンで動作します。
答えの一番下にある「imp」の注釈を展開するには、Python 3.4以降で使用するのに適したモジュールは 'importlib'です https://docs.python.org/3/library/importlib.html#module -importlib – Aaron
これはGitubのサイトからリンクされているVUnitのGitterチャンネルでよく聞かれるでしょう。それは非常に良いサポートチャンネルです。 –
@BrianDrummond:ありがとう、私はそれを見ていきます。 – EquipDev
VUnitチームがお手伝いできる場合は、自分の解決策を自己回答として報告してください。 – Paebbels