169 похожих чатов

Нужно сделать програмку - тестер функционал: открыть файл.txt тестовых данных, запустить

проверяемую программу,
подать на вход параметры из тестовых данных и
записать вывод в виде:
»»тестовые данные
»»соотв. вывод.

известно ли готовое решение?
Если нет - где искать подсказки?

20 ответов

12 просмотров

Подсказки искать в уточнении постановки задачи. Что значит "подать на вход"?

что за программы проверяются? если консольные, то program.exe < файл.txt > выхлоп.txt

Budemposmotret- Автор вопроса
Budemposmotret- Автор вопроса
Igor
что за программы проверяются? если консольные, то ...

Где брать program.exe? возможно не правильно понял... идея в том, чтобы одну и ту же программу (и множество разных) протестить на допустимых, недопустимых значениях ввода. причем на нескольких сериях вводных данных.... идея: TesterProgram.exe (консольная) readln (fTestData); //TestData.txt readln (sProgramName); // While not EOF (fTestData) run (sProgramName, fTestData, sOutputFile);

как собираешься на вход параметры давать? Путь в параметрах файла, или выбор из меню внутри программы?

Budemposmotret- Автор вопроса
Serjone
как собираешься на вход параметры давать? Путь в п...

Внутри программы объявить: program MyProgram(<params><var s:string>); в теле программы - разпарсить s на значения переменных.

Budemposmotret
Где брать program.exe? возможно не правильно понял...

Человек написал о перенаправлении стандартного ввода-вывода. Для этого не нужна отдельная программа.

Budemposmotret
Запустить в консоли с параметрами.

procedure TFormMain.HandleOutput(const AText: string); begin Log('> %s', [AText]); end; ... JclSysUtils.Execute(cmd_str, HandleOutput); если надо генерить на лету в stdin запущеной дочерней программы, то надо смотреть иные решения - через пайпы. вроде выше обсуждали. возможно в TJvCreateProcess есть отправка данных в инпут чилда

Budemposmotret
Тогда как?

Там же прямо в сообщении пример дан. Тебе надо через stdin файл запихать? Тогда через ">"

Serg
... через "<"

Да, верно, через > stdout.

Budemposmotret- Автор вопроса
Иван Алексеев
Там же прямо в сообщении пример дан. Тебе надо чер...

Правильно понимаю, что JclSysUtils.Execute(cmd_str, HandleOutput); cmd_str - переменная, через которую отправка параметров HandleOutput - переменная в которую сбор вывода? соответственно - в цикле while not EOF("fTestData.txt") do begin JclSysUtils.Execute(cmd_str, HandleOutput); Writeln('Diagnostics.txt', cmd_str); Writeln('Diagnostics.txt', HandleOutput); end; ????

Budemposmotret
Правильно понимаю, что JclSysUtils.Execute(cmd_st...

Там шла речь о запуске из консоли, без написания дополнительной программы. Из вашего описания не следует необходимости написания софта.

Budemposmotret- Автор вопроса
Иван Алексеев
Там шла речь о запуске из консоли, без написания д...

Возможно не не следует. В т.ч. для профи - легче пару строк кода добавить, потом закомментить и удалить. - поскольку достаточно легко каждый раз понять что и куда. Для любителя - легче однажды сделать внешнюю прогу с инструкцией и пользовать при потребности с промежутком в 2-5-10 лет.

оказалось дело не в TJvCreateProcess а в тестовой программе, которая даже при перенаправлении из комстроки в файл - продолжает буферизировать вывод по 128 байт. {$APPTYPE CONSOLE} var s: string; begin repeat Readln(Input, s); Writeln(Output, '{', s, '}'); Writeln(ErrOutput, '[', s, ']'); until False; end.

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта