2013-10-07 6 views
8

ich pytest, tmp.py nur ein sehr einfaches Testskript muss lernen:PyCharm pytestrunner Plugin unerwartete Stichwort Argument

def square(x): 
    return x*x 
def test_square(): 
    assert square(4) == 16 

PyCharm Mit diesem Skript ausgeführt werden soll, habe ich mein Projekt Einstellung so konfiguriert, dass pytest ist verwendet als mein Standardtestläufer. Wenn ich den obigen Code ausführen bekomme ich folgende Fehlermeldung:

/Users/mingxiao/webdav_2.7.5/bin/python /Applications/PyCharm.app/helpers/pycharm/pytestrunner.py -p pytest_teamcity /Users/mingxiao/dev/juggernaut/src/integrations/webDAV/demo/tmp.py "-k test_square" 
Testing started at 4:41 PM ... 
Traceback (most recent call last): 
    File "/Applications/PyCharm.app/helpers/pycharm/pytestrunner.py", line 51, in <module> 
    main() 
    File "/Applications/PyCharm.app/helpers/pycharm/pytestrunner.py", line 20, in main 
    _pluginmanager = PluginManager(load=True) 
TypeError: __init__() got an unexpected keyword argument 'load' 

Process finished with exit code 1 

I PyCharm 3.0 Professional Edition leite, pytest 2.4.2 und Python 2.7.5. Es scheint, dass sein PyCharm selbst das Problem verursacht.

+0

es ist PyCharm ohne * s * arbeiten. –

Antwort

11

Es scheint eine Inkompatibilität zwischen PyCharm und py.test 2.4.x zu sein. Wenn Sie py.test 2.3.5 installieren (z. B. pip install pytest==2.3.5), funktioniert es einwandfrei. Ich schlage vor, einen Fehlerbericht an JetBrains zu senden.

+0

Wenn PyCharms es nicht repariert hat, lege ein Problem beim pytest issue tracker ab. Es ist eine einfache Lösung, denke ich. – hpk42

2

PyCharm pytest Helfer nicht mit neueren pytest kompatibel zu sein scheint. Bis sie es beheben, funktioniert es gut, wenn Sie es durch den Inhalt Ihres py.test-Skripts ersetzen.

Helper befindet sich unter PyCharm.app/helpers/pycharm/pytestrunner.py (Sie können diesen Pfad sehen, wenn Sie versuchen, Tests auszuführen). Legen Sie einfach die Ausgabe von cat `which py.test` darin, für mich ist:

__requires__ = 'pytest==2.5.1' 
    import sys 
    from pkg_resources import load_entry_point 

    if __name__ == '__main__': 
     sys.exit(
      load_entry_point('pytest==2.5.1', 'console_scripts', 'py.test')() 
    ) 
0

In der PyCharm hinzufügen pytest zu einem Projekt von: Einstellungen -> Projekt Interpreter -> Klicken Sie auf das Plus-Symbol grün -> Suche nach „pytests“ -> Klicken sie auf das „Paket installieren“ -Schaltfläche

Rerun, jetzt sollte es am Ende