Я написал простую программу на Python, которая принимает пользовательский ввод с использованием input ().Доступно несколько различных команд.
Я хочу убедиться, что все доступные команды работают должным образом и что программа перехватывает недопустимые команды.Поскольку существует довольно много разных команд, это занимает очень много времени, чтобы сделать вручную (т.е. запустить программу и ввести все команды, одну за другой).(У меня есть отдельные тестовые функции для фактического выполнения всех команд, но я изо всех сил пытаюсь найти хороший способ протестировать эту функциональность вместе с циклом input ().)
Как я могу автоматизироватьпроцесс предоставления (предопределенных) пользовательских вводов, не путая остальную часть кода? В дополнение к использованию этого для тестирования программы, это также послужило бы примером для пользователя, чтобы увидеть возможное использованиепрограммы.
Мое текущее решение состоит в том, что у меня есть две версии функции main (), которая в основном представляет собой просто бесконечный цикл, который принимает входные данные до тех пор, пока не будет дана команда выхода.Первая версия, main (), является версией, предназначенной для использования, и принимает входные данные от input (), пока пользователь не решит выйти.Вторая версия, main_test (), используется только для тестирования и использует входные данные из заранее определенного списка, указанного в коде.Это делает работу, но я не хочу код main_test () в окончательной версии.Я также не хочу «загрязнять» main (), добавляя вещи, используемые только для тестирования.
def main():
while True:
user_input = input()
...
def main_test():
test_input = [...]
test_iter = 0
while True:
user_input = test_input[test_iter]
test_iter += 1
...
Мне не удалось найти хороший способ сделать это в Python, хотя я уверен,должен быть умный способ.Я бы предпочел способ, который не требует дополнительного импорта.Но если есть хороший способ сделать это с дополнительным импортом, у меня все уши.
В любом случае, когда я выбрал python, моей следующей мыслью было указать команды в Makefile, где я бы началЗапрограммируйте и введите программу ввода текста, эмулируя пользователя.Основным преимуществом этого является то, что мне нужна только функция "main ()", и мне не нужно ничего менять в коде Python.Недостатком является то, что пример / test указан вне файлов * .py, что может сбить пользователя с толку.