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

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

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

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

20 ответов

1 просмотр

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

что за программы проверяются? если консольные, то 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.

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

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

а проверьте, собирается ли у кого сейчас транк лазаря через делюкс? у меня вот: fpcupdeluxe: info: Lazarus Native Installer (BuildModuleCustom: UserIDE): LazBuild: building Us...
Iluha Companets
20
добрый день. возможно ли изменить цвет окон лазаруса? Как?
Budemposmotret
35
This is a big issue. Just by being a citizen of a country, you are denied to contribute to Open Source software: https://youtu.be/L5Ec5jrpLVk?si=1iIuHnMPbCB4anV-
Sharuzzaman Ahmat Raslan
72
Господа, а кто-нибудь сталкивался с размещением на TTabControl/TTabSheet множества контролов (> 100) с последующими External: Access violation? Вот буквально на ровном месте. ...
Dmitry
29
Вот например простой пример, как получить стоимость хешрейта монеты монеро с сайта whattomine.com c использование сеарилизатора при парсинге JSON TaskProfit := TTask.Run(proc...
Delphi Coder
2
А какие существуют способы обработки ошибок выделения памяти в ядре? Т.е., допустим, есть функция, которая возвращает адрес свободной страницы в физической памяти и диапазон в...
disba1ancer
51
ну так че, сделать програмулину, в которую можно добавлять в Едиты свои строчки кода(закладки) а потом по ним прыгать. ну и сохраняться они естественно будут той програмуленно...
Kraszx
15
Does anyone have some zeroday's left?
Wito!d ♥️🩷
44
Приветствую всех!)) Подскажите, а кто мог бы написать на делфи движок (самую базу) интерпретатора очень легковесного и минималистичного языка программирования? Язык - проце...
Моринаро
8
#include <stdlib.h> #include <stdio.h> #include <math.h> #include <assert.h> #include <limits.h> long long avg3(long long a, long long b, long long c) { if (a == b && b =...
Malformed C
4
Карта сайта