Я быстро объясню, что именно я подразумеваю под этим.
Я работаю над проектом с использованием Python, где у меня есть несколько модулей, выполняющих сегменты работы.Скажем, например, у меня есть модуль с именем Parser.py
, и у этого модуля есть функция parseFile()
, которую мой основной модуль Main.py
вызывает для анализа некоторых файлов.
На данный момент яиспользование метода main внутри Parser.py
if __name__ == "__main__":
line_list = parseFile(sys.argv[1])
out_file = open(sys.argv[2], "w")
for i in range(len(line_list)):
out_file.write(line_list[i].get_string(True))
Не важно, что именно выполняет синтаксический анализ, но важной частью является то, что если вы его вызовите, первый аргумент будет входным файлом для синтаксического анализа,Второй аргумент - это выходной файл для синтаксического анализа.
Итак, по сути, я использую командный файл для проверки результатов моего синтаксического анализатора с помощью типичной системы ввода, вывода и базовой линии...
ECHO Set the test, source, input, output and baseline directories
set TESTDIR=%CD%
set SRCDIR=%CD%\..\pypro\src
set INDIR=%CD%\input
set OUTDIR=%CD%\output
set BASEDIR=%CD%\baseline
:: Parser.py main method is base for unit testing on parsing
ECHO Begin Parser testing
cd %INDIR%\Parser
FOR %%G IN (*.psma) DO %SRCDIR%\Parser.py %%G %OUTDIR%\Parser\%%G
ECHO Parser testing complete
cd %TESTDIR%
"C:\Program Files\WinMerge\winmergeU.exe" "%OUTDIR%" "%BASEDIR%"
Как вы можете видеть, он сравнивает результаты с базовой линией, поэтому, если что-то будет изменено, программист узнает, что он больше не действителен или требования неверны.
что-нибудь не так с этим методом?Я сделал это, потому что это было бы легко.Мой план состоит в том, чтобы продолжать делать это с как можно большим количеством модулей, которые действительны и имеют смысл делать таким образом, а также с набором тестов pyunit внутри pydev ...