Назовите тесты носа как задачу scons.
Я хотел бы получить scons для вызова носовых тестов со списком каталогов. Каков был бы лучший способ сделать это?
2 ответа
Если вам нужно проанализировать код возврата внешнего приложения (например, если вы вызываете тесты), вам необходимо использовать модуль подпроцесса Command() + python. Если вы используете только команду, вы не можете получить код возврата приложения.
Например:
if 'test' in COMMAND_LINE_TARGETS:
runTestsCmd = env.Command('runTests', None, Action(runTests, "Running tests"))
AlwaysBuild(runTestsCmd)
Alias('test', runTestsCmd)
Пример функции runTests:
def runTests(target = None, source = None, env = None) :
# fill args
retCode = subprocess.call(args, env = env['ENV'], cwd = cwd, shell = True)
Exit(retCode)
Также вы можете установить дополнительные зависимости для runTestsCmd.
Depends(runTestsCmd, [appAndLibsToBuild])
Я не знаю фреймворка носа, но есть два способа выполнения внешних приложений с помощью SCons (есть другие способы сделать это с помощью Python, но не нужно упоминать их) следующим образом:
- Execute() - всегда выполняется при анализе файлов SConscript
- Command() - действует как цель и выполняется только в соответствии с ее зависимостями
Я думаю, вы захотите использовать опцию Command() для запуска модульных тестов только в случае изменения одной из связанных зависимостей.
Что касается списка каталогов, то вы можете использовать некоторые программы на Python, например:
dirs = ['dir1', 'dir2', 'dir3']
for dir in dirs:
cmd = 'theScriptToExecute $SOURCE $TARGET'
env.Command(target = 'whatever', source = dir, action = cmd)