2017-03-23 4 views
3

는이 같은 디렉토리 및 파일 구조를 가지고있다.여러 VUnit run.py 파일을 단일 VUnit 실행으로 결합하는 방법은 무엇입니까?</p> <pre><code>vunit_multi/ alfa/ run.py ... bravo/ run.py ... </code></pre> <p>(Vunit)에 <code>run.py</code> 별도로 실행할 수 있습니다

여러 개별 VUnit 실행을 결합하여 상태 보고서를 단일 실행으로 결합하는 좋은 방법이 있습니까? 바닥에 문이 마지막 세 줄이 실행되는 것을 의미하는 경우

+3

이것은 Github의 사이트에서 링크 된 VUnit의 Gitter 채널에서 더 잘 묻습니다. 아주 좋은 지원 채널입니다. –

+0

@BrianDrummond : 고마워, 나는 그것을 살펴볼 것이다. – EquipDev

+1

VUnit 팀이 귀하를 도울 수있는 경우 솔루션을 자체 답변으로보고하십시오. – Paebbels

답변

3

의 당신의 알파를 말하고 스크립트를 실행 브라보하자이

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() 

같은 지금이

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() 

받는 스크립트를 준비 보인다 파일을 스크립트로 호출하면 (여전히 알파를 테스트하는 데 사용할 수는 있지만) 파일을 다른 스크립트로 모듈로 가져온 경우에는 사용할 수 없습니다.

지금 모든 스크립트를 실행 찾은 다음 그 스크립트를 반복합니다 최상위 디렉토리 ( 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