2014-11-05 16 views
5

click to pakiet python do tworzenia ładnych interfejsów linii poleceń dla aplikacji. Grałem trochę kliknięciem i dzisiaj pchnąłem ten konwerter liczby rzymskiej simple na github.testowanie aplikacji python kliknięcie

Co chcę teraz zrobić, to przetestować aplikację do klikania. Czytam dokumentację, ale nie wiem, jak uruchomić testy.

Czy ktoś ma doświadczenie w testowaniu aplikacji kliknięć?

+0

Więc umieścić testy w toroman.py i uruchomić? Próbowałem, ale to nie działa. – jetbird13

+0

Z rozdziału [Testowanie] (http://click.pocoo.org/3/testing/) w dokumentach wygląda na to, że można pisać testy jako osobne skrypty z użyciem 'click.testing.CliRunner', a następnie uruchom testy po prostu uruchamiając te skrypty tak jak każdy inny skrypt Pythona. Jaka część tego jest myląca? Gdzie utknąłeś? – abarnert

+0

Tak, ale po uruchomieniu pliku Pythona, który zawiera testy, nie otrzymuję żadnych danych wyjściowych informujących mnie, czy przeszedł pomyślnie, czy też nie. – jetbird13

Odpowiedz

3

Umieszczenie kodu poniżej 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() 

Jeśli nazywana po prostu z python test_greet.py przechodzą testy i nic nie jest pokazane. W przypadku użycia w środowisku testowym działa zgodnie z oczekiwaniami. Na przykład nosetests test_greet.py zwraca

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

OK 
+1

Ta przykładowa funkcja działa zgodnie z oczekiwaniami, jeśli jest osadzona w strukturze testowej, np. 'Nose' lub' pytest' [patrz przykład w kliknięciu] (https://github.com/mitsuhiko/click/blob/master/tests/test_testing.py) – jaimedash

+1

To tylko przykład małej funkcji in-line, jak przetestować skrypt, który używa kliknięcia? –

0

pytest posiada teleskopowe dla twierdzi.

Aby uruchomić testy na istniejącym skrypcie, należy go "zaimportować".

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'