2013-10-07 10 views
8

Ho uno script di test molto semplice solo per imparare pytest, tmp.py:PyCharm argomento pytestrunner PluginManager parola chiave inaspettato

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

Utilizzando PyCharm per eseguire questo script, ho configurato il mio progetto in modo tale che l'impostazione è pytest usato come mio test runner di default. Quando eseguo il codice di cui sopra ottengo il seguente errore:

/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 

Sono in esecuzione PyCharm 3.0 Professional edition, pytest 2.4.2, 2.7.5 e pitone. Sembra che la stessa PyCharm stia causando il problema.

+0

E 'PyCharm senza * s * alla fine. –

risposta

11

Sembra essere un'incompatibilità tra PyCharm e py.test 2.4.x. Se si installa py.test 2.3.5 (ad esempio, pip install pytest==2.3.5) funziona correttamente. Suggerisco di inviare una segnalazione di bug a JetBrains.

+0

Se PyCharms non lo ha risolto, presenta un problema nel tracker dei problemi pytest. È una soluzione facile, penso. – hpk42

2

PyCharm pytest aiutante non sembra essere compatibile con le nuove pytest. Fino a quando non lo risolvono, sostituendolo con il contenuto del tuo script py.test funziona bene.

L'helper si trova in PyCharm.app/helpers/pycharm/pytestrunner.py (è possibile visualizzare questo percorso quando si tenta di eseguire test). Basta mettere l'output di cat `which py.test` in esso, per me è:

__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

Nel PyCharm aggiungere pytest al progetto da: Impostazioni -> Progetto interprete -> Fare clic sull'icona Green Plus -> Cerca "pytests" -> Fare clic sul pulsante "Installa pacchetto"

Rerun, ora dovrebbe funzionare