2013-07-03 2 views
0

Я новичок в модульном тестировании. Мне было интересно, как вы можете тестировать код ниже с помощью теста python unit. Вы можете использовать какие-либо рамки для тестирования, но, пожалуйста, укажите, почему и как быть. На самом деле цените помощь каждого.Испытание модуля Python

BTW вы можете вносить изменения в код, если он делает то, что он делает прямо сейчас. В любом случае это было BS: P

pyg = 'ay' 

original = raw_input('Enter a word:') 

word = original.lower() 

first = word[0] 

    if first == "a" and "e" and "i" and "o" and "u": 
     new_word = word + pyg 
     print new_word 
    else: 
     consonant_fix = word[1:] 
     new_word = consonant_fix + word[0] + pyg 
     print new_word 
+0

FYI: 'first ==" a "и" e "и" i "и" o "и" u "' эквивалентны "first ==" a "и True и True, True и True', что эквивалентно 'first ==" a "' – SethMMorton

ответ

7

Я не думаю, что это хороший кандидат для модульного тестирования.

Ввод/вывод не должен иметь значения.

Лучше реорганизовать это в функцию, которая принимает строку, работает с ней и возвращает новую строку. Затем вы можете написать модульные тесты с конкретными входами, чтобы проверить поведение, которое вы хотите.

Как написано, ваш код не поддается тестированию.

Вот как я бы переписать его:

def rearrange(original, pyg): 
    word = original.lower() 
    first = word[0] 
    if first == "a" and "e" and "i" and "o" and "u": 
     new_word = word + pyg 
    else: 
     consonant_fix = word[1:] 
     new_word = consonant_fix + word[0] + pyg 
    return new_word 


if __name__ == '__main__': 
    pyg = 'ay' 
    original = raw_input('Enter a word:') 
    print rearrange(original, pyg) 

Вы можете проверить эту rearrange() функцию с различными входами в настоящее время.

+0

Спасибо человеку. На самом деле это ценю. – Ash

+0

Я бы предпочел принять и проголосовать за ответ на вашу благодарность. – duffymo