为什么coverage.py没有正确测量Flask的runserver命令?

Jul*_*ius 8 python coverage.py flask

我正在试图找出正在运行Flask应用程序的哪些行.我像这样开始Flask:

coverage run manage.py runserver
Run Code Online (Sandbox Code Playgroud)

输出如下:

 * Running on http://127.0.0.1:5000/
 * Restarting with reloader
Run Code Online (Sandbox Code Playgroud)

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()
Run Code Online (Sandbox Code Playgroud)

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

当我查看coverage HTML报告时,它只说明了方法定义,而不是方法的实际主体.

我怀疑这是因为这些方法是由一个子进程执行的,而这个子进程没有被coverage.py覆盖.

有任何想法吗?

Jul*_*ius 7

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

coverage run manage.py runserver -R
Run Code Online (Sandbox Code Playgroud)

然后输出只包含这个:

* Running on http://127.0.0.1:5000/
Run Code Online (Sandbox Code Playgroud)

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

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

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