Как проверить список входов с помощью PyTest в часовом цикле while - PullRequest
0 голосов
/ 11 марта 2019

Я пытался протестировать список входов в Pytest, используя эту функцию

def test_play_hand():                                                               
    word_list = load_words()                                                        
    hand = {'e': 2, 'u': 1, 'g': 1, 'm': 1, 'b': 1, 't': 1}                         
    inputs = ['gum', 'beet', '.']                                                   

    with mock.patch('builtins.input', return_value= next(iter(inputs))):                                                                      
        assert play_hand(hand, word_list) == 0  

Функция play_hand запускает основанный на часовом сигнале цикл while, который получает словарь, а затем запрашивает у пользователя ввод строки.

Если вход является ., цикл заканчивается.

В противном случае, если цикл получает строку, он проверит руку и наличие доступных символов и удалит символы, использованные в строке, из руки.

Тест работает, когда mock.patch получает только один вход.

Как реализовать тест, используя список или несколько входов для тестирования?

Без iter () выдает ошибку входных данных, не повторяемых, а с iter () просто замирает.

Я ценю любой вклад.

Редактировать: Забыл упомянуть, что play_hand возвращает int

1 Ответ

0 голосов
/ 11 марта 2019

Нашел ответ.

def test_play_hand():                                                               
    word_list = load_words()                        
    hand = {'e': 2, 'u': 1, 'g': 1, 'm': 1, 'b': 1, 't': 1} 
    inputs = ['gum', 'beet', '.']                                      

    with mock.patch('builtins.input', side_effect = inputs) :                       
        assert play_hand(hand, word_list) == 12 

Мне пришлось заменить return_value на side_effect, чтобы запустить все входы в тесте.

Ссылка: https://docs.python.org/3/library/unittest.mock.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...