Я быстро объясню, что я имею в виду под этим.
Я работаю над проектом с использованием python, где у меня есть несколько модулей, выполняющих сегменты работы. Скажем, например, у меня есть модуль с именем Parser.py
, и этот модуль имеет функцию parseFile()
, которую мой основной модуль Main.py
вызывает для анализа некоторых файлов.
На данный момент я использую основной метод внутри 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...