2014-02-27 7 views
7

Ich habe ein Python-Programm, das getestet wird, indem es mehrmals mit verschiedenen Eingaben ausgeführt wird, und vergleicht die Ausgaben mit Referenzergebnissen.Wie Code-Coverage über mehrere Läufe von Python-Skript kombiniert werden

Ich möchte Code Coverage aller Tests kombiniert bekommen, so kann ich sehen, ob es zusätzliche Sätze von Eingängen gibt, die ich verwenden sollte, um vollständige Abdeckung zu erhalten. Ich habe mir das Coverage-Modul angeschaut, kann aber nicht herausfinden, wie ich es schaffen kann.

Irgendwelche Hinweise?

Antwort

3

Ned Batchelders coverage.py hat eine feature to combine the results of multiple runs, die genau das zu sein scheint, was Sie suchen.

+0

Ja, das stimmt genau. Sie können dies verwenden, um mehrere Datensätze, mehrere Versionen von Python oder mehrere Abhängigkeitsoptionen (z. B. verschiedene Versionen von Middleware oder Support-Modulen) zu verwenden. Sie können mehrere Testläufe in einem Shell-Skript "orchestrieren", aber Sie können dies besser tun: Der [tox] (https://tox.readthedocs.org/en/latest/) Test-Runner erstellt automatisch unveränderte virtuelle Umgebungen und führe Tests in diesen aus; Sehr empfehlenswert für alles, was über das einfachste Testsetup hinausgeht. –

9

Wenn es auf demselben Computer ausgeführt wird, führen Sie es mit der Option -a aus, die die Überdeckungsdaten über mehrere Anrufe hinweg ansammelt.

Beispiel:

coverage erase 

coverage run -a <command> [arguments, ...] 

repeat coverage run -a <command> ... as many times as needed. 

coverage report 

coverage html 

doc: http://coverage.readthedocs.org/en/latest/cmd.html#data-file

Hoffnung, das hilft.