Logger Framework Logger не добавляет информацию в файл отладки, если используется внутри файла ресурсов - PullRequest
0 голосов
/ 07 марта 2019

У меня есть набор роботов в следующей структуре

S_SUITE
├── datasource.txt
├── dinesh.robot
├── __init__.py
└── test.py

dinesh.robot

 *** Settings ***
Library        test.py
Resource    datasource.txt
*** Test Cases ***
DEMO
    Log    "Testcase start"
    sample
    Log    "Testcase end"

datasource.txt

*** Settings ***
Library   __init__.py

__ __ INIT. Ру

from robot.api import logger
from robot.libraries.BuiltIn import BuiltIn
# These below messages are not seen in debug_record.txt
logger.info('Expected to see this!!!')
logger.error('At least this in debug_record')

def hai():
  # These below messages are also not seen in debug_record.txt
  BuiltIn().log("this is an info message", "INFO")
  logger.info('this is an info too')

hai()

test.py

from robot.api import logger
def sample():
    # Only the below logger.info is added into debug_record.txt
    logger.info('THIS IS INSIDE SAMPLE')

Я использую этот пакет как

 robot --loglevel debug --debugfile debug_record.txt S_SUITE/

Когда я запускаю этот пакет, в debug_record.txt добавляется только одно сообщение THIS IS INSIDE SAMPLE. datasource.txt из dinesh.robot включает файл __init__.py. В этом файле есть несколько операторов logger.info, которые никогда не регистрируются в debug_record.txt.

Наряду с logger.info я также попробовал logger.error & BuiltIn().log. Но не повезло. Я заметил, что logger.error печатает ошибку в консоли, а также отправляет ту же информацию на log.html, но не debug_record.txt

Похоже, что logger добавляет информацию к debug_record.txt только в тех местах, где регистратор используется внутри тестового набора (т. Е. Во время выполнения тестового набора), и если используется Resource набора, он не добавляет информация к debug_record.txt.

Как я могу исправить эту проблему?

debug_record.txt:

[dsivaji@FADL155 ~]$ cat debug_record.txt
==============================================================================
20190307 10:48:34.845 - INFO - + START SUITE: S SUITE [ ]
==============================================================================
20190307 10:48:34.858 - INFO - +- START SUITE: S SUITE.Dinesh [ ]
==============================================================================
20190307 10:48:34.859 - INFO - +-- START TEST: DEMO [ ]
------------------------------------------------------------------------------
20190307 10:48:34.860 - INFO - +--- START KW: BuiltIn.Log [ "Testcase start" ]
20190307 10:48:34.860 - INFO - "Testcase start"
20190307 10:48:34.861 - INFO - +--- END KW: BuiltIn.Log (1)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20190307 10:48:34.861 - INFO - +--- START KW: test.Sample [ ]
20190307 10:48:34.862 - INFO - THIS IS INSIDE SAMPLE
20190307 10:48:34.863 - INFO - +--- END KW: test.Sample (1)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20190307 10:48:34.863 - INFO - +--- START KW: BuiltIn.Log [ "Testcase end" ]
20190307 10:48:34.864 - INFO - "Testcase end"
20190307 10:48:34.865 - INFO - +--- END KW: BuiltIn.Log (1)
------------------------------------------------------------------------------
20190307 10:48:34.866 - INFO - +-- END TEST: DEMO (7)
------------------------------------------------------------------------------
20190307 10:48:34.869 - INFO - +- END SUITE: S SUITE.Dinesh (22)
==============================================================================
20190307 10:48:34.871 - INFO - + END SUITE: S SUITE (141)
==============================================================================

1 Ответ

0 голосов
/ 12 марта 2019

У вашего вопроса много сторон. Но то, что вы видите в файле отладки, на мой взгляд, правильно.

1) Импорт библиотек с использованием API статических библиотек Robot Framework не выполняет код, когда находит ключевые слова из ваших библиотек. Вместо этого Robot Framework использует рефлексию для обнаружения ключевых слов. Поэтому, когда ваша статическая библиотека импортируется, регистрация не происходит.

Но система импорта сложна, и поэтому вышеприведенное не всегда верно. В зависимости от используемого библиотечного API и импортируемого вами модуля или класса, обнаружение ключевых слов происходит по-разному. Пример, если вы импортируете класс и регистрируетесь из библиотеки init , которая должна появиться в файле отладки.

2) Вход из ключевых слов, который не выполняется. Ключевые слова, которые не выполняются, не генерируют ведение журнала.

3) Регистрация по выполненному ключевому слову Как вы сказали, это регистрируется и ожидается, что оно появится в файле журнала.

...