Проблема
Logger в RobotFramework позволяет сохранять сообщения из кода тестов либо библиотек.
Однако, зачастую требуется сохранить и файл для дальнейшего анализа.
Например, к ситуациям, которые требуют дополнительного инструмента логирования относятся:
- сохранение лог-файла\конфига тестируемой подсистемы
- сохранение сообщений от подсистемы в отдельный файл
- автогенерация файла данных для дальнейшего использования.
Да, в RobotFramework есть кейворды, сохраняющие данные в файл и кейворды копирования файла. Но мне необходимо проверять код от разных тестировщиков, и я не хочу искать эти файлы по всей файловой системе, да и иметь логирование в одну строчку гораздо удобнее.
Решение
Необходима библиотека, которая способна сохранять доп. информацию и файлы по заранее определённым правилам.
В качестве такого правила предлагается сохранять файлы в каталоге
${OUTPUT_DIR}/<имя папки для доп. логов>/test suite/…/test suite/test case/.
Таким образом, найти файл, относящийся к определённому тесту не составит труда.
Ссылка на библиотеку:
Ссылка на документацию:
Рассмотрим библиотеку подробнее
При инициализации библиотеки, можно задать 2 необязательных параметра:
-
output_dir
- каталог, где хранятся основные файлы логов Robot Framework. По умолчанию -${OUTPUT_DIR}
-
test_log_folder_name
- имя каталога, где будут храниться доп. файлы логов. По умолчанию -Advanced_Logs
В библиотеке реализованы 2 кейворда:
-
Create_Advanced_Logdir
, который создаёт иерархию папок для
последующей записи в них файлов -
Write_Advanced_Testlog
, который
записываетcontent
в файлfilename
. При этом иерархия папок будет
создана безусловно.
Первый кейворд удобен в том случае, когда Вы хотите, например, сохранить файл с удалённого сервера: кейворд вернёт Вам необходимый путь, который можно использовать в дальнейшем.
Пример:
| *Settings* | *Value* |
| Library | AdvancedLogging |
| Library | SSHLibrary |
| *Test Cases* | *Action* | *Argument* |
| ${ADV_LOGS_DIR}= | Create advanced logdir | |
| Get File | /home/user/log.txt | ${ADV_LOGS_DIR}/log.txt |
=>
File ${OUTPUT_DIR}/Advanced_Logs/<TestSuite name>/<Test name>/log.txt
Второй кейворд удобен, когда вам надо быстро сохранить информацию в файл.
Пример:
| Write advanced testlog | log_for_test.log | test message |
=>
File ${OUTPUT_DIR}/Advanced_Logs/<TestSuite name>/<TestCase name>/log_for_test.log with content 'test message'
Вывод
Данная библиотека было написана мной довольно давно. Я так к ней привык на различных проектах, что уже на автомате пишу в Test setup кейворде:
${ADV_LOGS_DIR}= Create advanced logdir
Set test variable ${ADV_LOGS_DIR} ${ADV_LOGS_DIR}
и далее в тесте, например
Write advanced testlog output_from_web_server.html ${response_body}
Get File | /opt/apache/logs/error.log | ${ADV_LOGS_DIR}/error.log |