2013-10-24 53 views
8

我想弄清楚Flask應用程序的哪一行正在運行。我開始瓶這樣的:爲什麼coverage.py不能正確測量Flask的runserver命令?

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沒有覆蓋的子進程執行。

任何想法?

回答

7

所以事實證明,問題與上面的'reloader'消息有關。覆蓋報告是正確的,當我開始瓶這樣的代替:

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?