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"*可正常执行

你可能感兴趣的:(python学习笔记)