Win32 でプロファイリング/コード カバレッジ レポートを作成するには、これら 3 つのコマンドを実行する必要があります。
vsperfcmd /start:coverage /output:run.coverage
helloclass
vsperfcmd /shutdown
helloclass 実行可能ファイルは vsperfcmd の同じプロセスでプロファイリングする必要があるため、コマンドを 1 つずつ実行することはできません。
私が考えているのは、これら 3 つのコマンドを実行するバッチ ファイルを作成し、そのバッチ ファイルを Python で実行することです。ただし、Python には、シェルを起動してコマンドを実行するのと同等のアクションを実行する方法が必要だと思います。
- Q : Python の同じプロセスでコマンドを実行するにはどうすればよいですか?
- Q : または、コマンド シェルを起動して Python でコマンドを実行するにはどうすればよいですか?
解決した
import subprocess
cmdline = ["cmd", "/q", "/k", "echo off"]
cmd = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)
batch = b"""\
rem vsinstr -coverage helloclass.exe /exclude:std::*
vsperfcmd /start:coverage /output:run.coverage
helloclass
vsperfcmd /shutdown
exit
"""
cmd.stdin.write(batch)
cmd.stdin.flush() # Must include this to ensure data is passed to child process
result = cmd.stdout.read()
print(result)