Автоматизация тестирования с использованием командных файлов: - PullRequest
2 голосов
/ 25 сентября 2008

У меня есть следующий макет для моего набора тестов:

TestSuite1.cmd:

  1. Запустите мою программу
  2. Проверить результат возврата
  3. Если возвращаемый результат не равен 0, преобразуйте ошибку в текстовый вывод и прервите сценарий. Если это удастся, запишите успех.

В моем единственном файле .cmd я вызываю свою программу около 10 раз с другим вводом.

Проблема в том, что запускаемая мною 10 раз программа запускается каждый раз по несколько часов.

Есть ли способ для меня распараллелить все эти 10 запусков моей программы, все еще как-то проверяя возвращаемый результат и предоставляя правильный выходной файл, и при этом все еще используя один .cmd файл и один выходной файл?

Ответы [ 5 ]

4 голосов
/ 25 сентября 2008

Предполагая, что они не будут мешать друг другу, записывая в одни и те же файлы и т. Д .:

test1.cmd

:: intercept sub-calls.
  if "%1"=="test2" then goto :test2

:: start sub-calls.
  start test1.cmd test2 1
  start test1.cmd test2 2
  start test1.cmd test2 3

:: wait for sub-calls to complete.
:loop1
  if not exist test2_1.flg goto :loop1
:loop2
  if not exist test2_2.flg goto :loop2
:loop3
  if not exist test2_3.flg goto :loop3

:: output results sequentially
  type test2_1.out >test1.out
    del /s test2_1.out
    del /s test2_1.flg
  type test2_2.out >test1.out
    del /s test2_2.out
    del /s test2_2.flg
  type test2_3.out >test1.out
    del /s test2_3.out
    del /s test2_3.flg

  goto :eof
:test2

:: Generate one output file
  echo %1 >test2_%1.out
  ping -n 31 127.0.0.1 >nul: 2>nul:

:: generate flag file to indicate finished
  echo x >test2_%1.flg

Это запустит три параллельных процесса, каждый из которых повторяет свой порядковый номер, а затем подождите 30 секунд.

Все с одним файлом cmd и (в конечном итоге) одним выходным файлом.

1 голос
/ 25 сентября 2008

Windows

вы создаете пакетный файл, который по сути вызывает:

start TestSuite1.cmd [TestParams1]
start TestSuite1.cmd [TestParams2]

и т. Д., Который по существу разветвляет новые командные строки,

, который будет работать, если приложение может обрабатывать одновременных пользователей (даже если это тот же пользователь), а ваш TestSuite1.cmd способен обрабатывать параметры.

1 голос
/ 25 сентября 2008

Параллельная работа в командных файлах может быть выполнена с помощью исполняемого файла / команды start

0 голосов
/ 25 сентября 2008

Вам нужно будет запустить скрипт с разными параметрами на разных машинах , потому что все, что заставляет программу работать так долго для выполнения задачи (IO, время ЦП), будет в еще меньшем количестве, если несколько экземпляров вашего Программа запускается сразу.

Единственное исключение: время выполнения вызывается программой, переводящей себя в спящий режим.

0 голосов
/ 25 сентября 2008

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

Я бы использовал это для порождения пакетных файлов, которые запускают тесты, а затем добавляют в файл output.txt, используя >> как таковой:

testthingie.cmd >> output.txt
...