У меня есть приложение командной строки для Windows (которое задает ряд вопросов через командную строку), разработанное на Golang, и я хотел бы написать интеграционные тесты для этого приложения. Посмотрел https://github.com/zetamatta/expect. Он может имитировать вывод для каждого заданного вопроса. Пример:
expect("Enter installer name")
send("xxx\r")
expect("Execute it?")
send("y\r")
..
..
..
Приложение golang выполняет некоторую обработку на основе различных заданных вопросов и ответов на них. Он действительно устанавливает некоторые вещи. Если бы мне пришлось писать интеграционные тесты с использованием этого пакета, как он показал бы, прошел ли он тест или нет?
Мой сценарий lua выглядит так:
echo(true)
if spawn([[C:\test.exe]]) then
expect("Enter installer name?")
echo(true)
send("xxx\r")
expect("Install it?")
send("y\r")
expect("~]$")
echo(true)
send("exit\r")
end
Выполняю как:
expect.exe sample.lua
Он отлично работает и автоматически принимает указанные выше данные для вопросов, не вводя их вручную. Однако, в конце концов, как мне организовать это как тест, чтобы показать, что все прошло успешно или не прошло. В конце концов, мне нужно будет написать несколько подобных тестов для всех возможных и отрицательных сценариев.
Каковы ваши условия успеха / неудачи? Вы обрабатываете свои «неудачные» условия в самом сценарии ожидания? Если вы можете проверить «успех» по наблюдаемому побочному эффекту после запуска сценария expect, то вы можете просто проверить этот побочный эффект после запуска expect.