2013-10-24 3 views
8

Ich versuche herauszufinden, welche Zeilen einer Flask-Anwendung ausgeführt werden. Ich fange Flask wie folgt aus:Warum misst coverage.py den Flask-Befehl runserver nicht korrekt?

coverage run manage.py runserver 

Ausgabe sieht wie folgt aus:

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

manage.py sieht wie folgt aus:

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

from my_flask_app import app 

manager = Manager(app) 

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

ich dann verschiedene Teile der Anwendung über HTTP zuzugreifen.

Wenn ich den HTML-Bericht über die Berichterstattung anschaue, werden nur die Methodendefinitionen behandelt, nicht die eigentlichen Körper der Methoden.

Ich vermute, es liegt daran, dass die Methoden von einem Subprozess ausgeführt werden, der nicht durch coverage.py abgedeckt ist.

Irgendwelche Ideen?

Antwort

7

Es stellt sich also heraus, dass das Problem mit der obigen Nachricht "reloader" zusammenhängt. Der Deckungs Bericht ist korrekt, wenn ich Flask wie folgt beginnen statt:

coverage run manage.py runserver -R 

Ausgabe enthält dann nur das:

* Running on http://127.0.0.1:5000/ 

diese Weise ist es den Server nicht in einem separaten Prozess anläuft und Berichterstattung funktioniert super.

fand ich diese Lösung dank dieser Frage im Zusammenhang Django:

Why doesn't coverage.py properly measure Django's runserver command?