2014-11-05 7 views
5

click è un pacchetto python per la creazione di interfacce a linea di comando per le tue applicazioni. Ho giocato con click un po 'e oggi ho spinto questo convertitore di numeri romani simple su github.testing click python applications

Quello che voglio fare ora è testare la mia applicazione di clic. Sto leggendo la documentazione, ma non so come eseguire i test.

Qualcuno ha esperienza con il test delle applicazioni di clic?

+0

Quindi inserire test all'interno di toroman.py ed eseguirlo? Ho provato ma non funziona. – jetbird13

+0

Dal capitolo [Testing] (http://click.pocoo.org/3/testing/) nei documenti, sembra che tu possa scrivere test come script separati che usano "click.testing.CliRunner', e poi tu eseguire i test semplicemente eseguendo tali script come qualsiasi altro script Python. Quale parte di questo è confusa? Dove sei bloccato? – abarnert

+0

Sì, ma quando eseguo il file python che contiene i test non ottengo alcun output per dirmi se sono passati o falliti. – jetbird13

risposta

3

Mettere il codice di seguito in test_greet.py:

import click 
from click.testing import CliRunner 

def test_greet(): 
    @click.command() 
    @click.argument('name') 
    def greet(name): 
     click.echo('Hello %s' % name) 

    runner = CliRunner() 
    result = runner.invoke(greet, ['Sam']) 
    assert result.output == 'Hello Sam\n' 

if __name__ == '__main__': 
    test_greet() 

Se chiamati semplicemente con python test_greet.py i test passano e nulla viene mostrato. Se utilizzato in un framework di test, si comporta come previsto. Per esempio nosetests test_greet.py restituisce

. 
---------------------------------------------------------------------- 
Ran 1 test in 0.002s 

OK 
+1

Questa funzione di esempio funziona come previsto se incorporata nel framework di test come 'nose' o' pytest' [vedi esempio in click] (https://github.com/mitsuhiko/click/blob/master/tests/test_testing.py) – jaimedash

+1

Questo è solo un esempio di una piccola funzione in linea come faccio a testare uno script che usa lo scatto ?? –

0

pytest ha i gestori per l'afferma.

Per eseguire test su uno script esistente, è necessario "importarlo".

import click 
from click.testing import CliRunner 
from click_app import configure, cli 

def test_command_configure(): 
    runner = CliRunner() 
    result = runner.invoke(cli, ["configure"]) 
    assert result.exit_code == 0 
    assert result.output == 'configure'