我正在试图找出正在运行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覆盖。
有什么想法吗?
答案 0 :(得分:7)
事实证明,问题与上面的“重新加载器”消息有关。当我像这样启动Flask时,覆盖率报告是正确的:
coverage run manage.py runserver -R
输出只包含这个:
* Running on http://127.0.0.1:5000/
这样它就不会在单独的进程中启动服务器,并且覆盖范围很有效。
由于这个相关的Django问题,我找到了这个解决方案:
Why doesn't coverage.py properly measure Django's runserver command?