тестирование утилит командной строки

Я ищу способ запустить тесты на утилитах командной строки, записанных в ударе или любом другом языке.

Я хотел бы найти среду тестирования, которая будет иметь операторы как

setup:
    command = 'do_awesome_thing'
    filename = 'testfile'
    args = ['--with', 'extra_win', '--file', filename]
    run_command command args

test_output_was_correct
    assert_output_was 'Creating awesome file "' + filename + '" with extra win.'

test_file_contains_extra_win
    assert_file_contains filename 'extra win'

По-видимому, основной тестовый сценарий настроил бы временный каталог, в котором можно выполнить эти команды и удалить его в разрушении.

Я предпочел бы использовать что-то в Python, так как я намного более знаком с ним, чем с другими вероятными языками кандидата.

Я предполагаю, что могло быть что-то с помощью DSL, который сделает его эффективно агностическим языком (или его собственный язык, в зависимости от того, как Вы смотрите на него); однако это могло бы быть меньше, чем идеал, так как мои методы тестирования обычно включают написание кода, которое генерирует тесты.

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

Поддержка doctests, встроенного в вывод command --help была бы дополнительная премия :)

11
задан intuited 21 June 2010 в 21:17
поделиться

3 ответа

Ознакомьтесь с ScriptTest :

from scripttest import TestFileEnvironment

env = TestFileEnvironment('./scratch')

def test_script():
    env.reset()
    result = env.run('do_awesome_thing testfile --with extra_win --file %s' % filename)
    # or use a list like ['do_awesome_thing', 'testfile', ...]
    assert result.stdout.startswith('Creating awesome file')
    assert filename in result.files_created

Он также достаточно удобен для использования с doctest.

13
ответ дан 3 December 2019 в 08:02
поделиться

Ну... Что мы обычно делаем (и это одно из чудес языков O.O.), так это пишем все компоненты приложения, прежде чем сделать само приложение. Каждый компонент может иметь отдельный способ выполнения для целей тестирования (командная строка, обычно), что также позволяет вам думать о них как о полноценных программах, каждая по отдельности, и использовать их в будущих проектах. Если вы хотите проверить целостность существующей программы... что ж, я думаю, лучший способ - глубоко изучить, как она работает, или еще глубже: прочитать исходный текст. Или еще глубже: разработать бота для принудительного тестирования :3

Извините, это то, что у меня есть .-.

1
ответ дан 3 December 2019 в 08:02
поделиться

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

Существует также переопределение функции expect в Python, которая называется pexpect. Также могут быть доступны некоторые прямые интерфейсы к библиотеке expect. Я не питон, поэтому не могу много вам о них рассказать.

0
ответ дан 3 December 2019 в 08:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: