8

我试图弄清楚 Flask 应用程序的哪些行正在运行。我像这样启动 Flask:

coverage run manage.py runserver

输出如下所示:

 * Running on http://127.0.0.1:5000/
 * Restarting with reloader

manage.py 看起来像这样:

#!/usr/bin/env python
from flask.ext.script import Manager

from my_flask_app import app

manager = Manager(app)

if __name__ == '__main__':
    manager.run()

然后我通过 HTTP 访问应用程序的各个部分。

当我查看覆盖率 HTML 报告时,它说只覆盖了方法定义,而不是方法的实际主体。

我怀疑这是因为这些方法是由coverage.py 未涵盖的子进程执行的。

有任何想法吗?

4

1 回答 1

7

所以事实证明问题与上面的“重新加载”消息有关。当我像这样启动 Flask 时,覆盖率报告是正确的:

coverage run manage.py runserver -R

然后输出仅包含以下内容:

* Running on http://127.0.0.1:5000/

这样,它就不会在单独的进程中启动服务器,并且覆盖效果很好。

由于这个相关的 Django 问题,我找到了这个解决方案:

为什么coverage.py 不能正确测量Django 的runserver 命令?

于 2013-10-24T22:31:08.570 回答