2012-10-09 13 views
5

Napisałem skrypt w języku Pythona, który przyjmuje argumenty wiersza poleceń i odtwarza jedną rundę Tic Tac Toe.
uruchomiony wygląda to tak ...python, unittest, testuj skrypt z wierszami poleceń, argumenty:

run TTT o # xo ## x ## x 0 1

Jeśli ruch jest legalny to następnie drukuje nową szatę graficzną płyty oraz czy ktoś wygrał gra

Muszę napisać dla niego testy za pomocą unittest. Nie wiem jak przetestować cały skrypt z różnymi parametrami wiersza poleceń, wszystkie przykłady, które widziałem, testują poszczególne funkcje w skrypcie. Również skrypt używa argparse do analizy parametrów

Dzięki!

+1

[Pisanie testów jednostkowych w Pythonie: Jak zacząć?] (Http://stackoverflow.com/questions/3371255/writing-unit-tests-in-python-how-do-i-start) –

+0

@Pedro Tak, czytałem te rzeczy, ale wydaje mi się, że chodzi o testowanie funkcji. Nie wiem, czy można nawet przetestować cały skrypt za pomocą parametrów wiersza poleceń, czy ktoś może przynajmniej powiedzieć, czy jest to możliwe? –

+0

Ten może być bardziej w stylu tego, czego szukasz: [Testowanie skryptów w języku Python] (http://stackoverflow.com/questions/5974557/testing-python-scripts). –

Odpowiedz

10

byłaby swój program tak, że jego główne działania (minus argparsing) dzieje się w „głównym” funkcji:

def main(args): 
    ... 

if __name__ == '__main__': 
    args = parse_args() 
    main(args) 

Następnie można pisać testy dla zachowania main i parse_args.

PS. Możliwe jest użycie modułu subprocess, aby wywołać twój program jako proces zewnętrzny, a następnie przeanalizować wynik, ale myślę, że byłoby to brzydsze i niepotrzebne.

PPS. Dodatkową korzyścią z napisania twojego programu w ten sposób będzie możliwość zaimportowania programu jako modułu i wywołania jego głównej funkcji w innych skryptach. To może być przydatne, jeśli na przykład kiedyś chciałbyś zbudować dla niego GUI.

+0

Działa to, jeśli masz skrypt zawierający tylko jeden punkt końcowy wiersza poleceń (co ma miejsce w przypadku OP). Jeśli masz wiele punktów końcowych, musisz użyć innej strategii. –

Powiązane problemy