Flask Web開発15章テストコードカバー度レポート


先着コード
import os
import sys
import click
from app import create_app, db
from app.models import User, Role, Permission, Follow, Post, Comment
from flask_migrate import Migrate


COV = None
if os.environ.get("FLASK_COVERAGE"):
    import coverage
    COV = coverage.coverage(branch=True, include="app/*")
    COV.start()


app = create_app("default")
migrate = Migrate(app, db)



@app.cli.command()
@click.option("--coverage/--no-coverage", default=False, help="Run tests under code coverage")
def test(coverage):
    """Run the unit tests."""
    if coverage and not os.environ.get("FLASK_COVERAGE"):
        os.environ["FLASK_COVERAGE"] = "1"
        os.execvp(sys.executable, [sys.executable]+sys.argv)
    import unittest
    tests = unittest.TestLoader().discover("tests")
    unittest.TextTestRunner(verbosity=2).run(tests)
    if COV:
        COV.stop()
        COV.save()
        print("Coverage Summary:")
        COV.report()
        basedir = os.path.abspath(os.path.dirname(__file__))
        covdir = os.path.join(basedir, "tmp/coverage")
        COV.html_report(directory=covdir)
        print("HTML version: file://%s/index.html" % covdir)
        COV.erase()


*(venv)flask test--coverage*を使用して実行
本人の環境では、このコマンドプロンプトを実行します.
 can't open file 'D:\PycharmProjects\flask_blog\venv\Scripts\flask': [Errno 2] No such file or directory

理由は*sys.Argv*の最初のパラメータは*'D:\PycharmProjects\flask_blog\venv\Scripts\flask*システムでこのファイルが見つかりません
コードの変更
    if coverage and not os.environ.get("FLASK_COVERAGE"):
        os.environ["FLASK_COVERAGE"] = "1"
        os.execvp(sys.executable, [sys.executable]+[sys.argv[0]+".exe"]+sys.argv[1:])

修正*sys.Argv*の最初の項目は、末尾に*「.exe」*を追加して正常に実行します.