2012-11-29 3 views
6

Ich installierte Plugin für Pytest von hier: http: //pypi.python.org/pypi/pytest-cov. Dann habe ich einen einfachen Test Code:Pytest und Coverage-Kombination funktioniert nicht

pytest.py:

class TestNumbers: 
    def test_int_float(self): 
     assert 1 == 1.0 

    def test_int_str(self): 
     assert 1 == 1 

Ich versuchte es mit dem Befehl zu testen: 'py.test --cov-Bericht Begriff --cov pytest.py'. Aber es funktioniert nicht. Auch wenn ich den gesamten absoluten Pfad von pytest.py angegeben habe war es noch keine Daten zum Sammeln. Wenn ich jedoch py.test pytest.py verwende, hat es sicherlich Ok getestet.

Ich bin sehr verwirrend über dieses Problem, danke für Hilfe.

+1

Verwenden Sie einen Dateinamen mit dem Präfix "test_", aber verwenden Sie in keinem Fall "pytest.py", was das eigentliche "pytest" -Modul überschattet. – hpk42

Antwort

10

Versuchen:

py.test --cov-report term --cov=. test.py 

Der --cov Parameter ein Argument sagen, die Pfade zu decken. In Ihrem Beispiel würde --covtest.py verbrauchen, aber dann gab es keine Argumente mehr für py.test, welche Dateien getestet werden sollen.

UPDATE: wie @ hpk42 weist darauf hin, müssen Sie Ihr Beispiel etwas anderes als pytest.py nennen. Wenn ich das lokal machte, nannte ich es stattdessen test.py.

+0

Wenn "pytest.py" das Benutzermodul ist, wird es nicht funktionieren. Es überschattet den eigentlichen py.test (weil Sie "pytest importieren", um Helfer/Dinge zu importieren). – hpk42

+0

Whups ... das war in meinem Beispiel "test.py". Du hast natürlich vollkommen Recht. 'py.test' gibt zumindest eine anständige Fehlermeldung aus, die Sie jedoch über dieses Problem informiert. – jszakmeister

+0

Vielen Dank. Das Problem ist, dass 'pytest.py' als Dateiname verwendet wurde. Nach dem Wechsel ging alles durch Ok. Du antwortest richtig. Der Befehl sollte lauten: "py.test --cov-report term --cov =. Test.py" – user1067671