Логи из Python в Robot Framework

Введение

В этой статье вы можете изучить способы выведения в лог Robot Framework сообщений из внешних Python библиотек.

Предполагается, что вы владеете материалом статьи «Основы Robot Framework»

Рассмотрим простое подлючение внешней библиотеки из статьи «Архитектура тестов на Robot Framework»

Что нужно сделать, чтобы функция из unstable_url.py выводила что-то в лог файл или в консоль робота? Обычный print() нигде виден не будет.

from random import randrange def get_unstable_url() -> str: if randrange(2) == 1: return "https://www.urn.su" else: return "https://www.heihei.ru"

*** Settings *** Documentation Example that opens single page Library Browser ... enable_playwright_debug=${True} ... auto_closing_level=TEST ... retry_assertions_for=0:00:03 Library ../libraries/unstable_url.py Force Tags ui *** Variables *** *** Keywords *** Test Setup Tasks Start Chromium Browser Test Teardown Tasks Close Browser Start Chromium Browser New Browser browser=chromium headless=True New Context viewport={'width': 1920, 'height': 1080} ignoreHTTPSErrors=True *** Test Cases *** Starting a browser with a page [Tags] title ${url} = Get Unstable Url New Page ${url} Get Title == URN.SU Close Browser

BuitIn

from random import randrange from robot.libraries.BuiltIn import BuiltIn def write_to_console(s: str): BuiltIn().log_to_console(s) def get_unstable_url() -> str: if randrange(2) == 1: url = "https://www.urn.su" else: url = "https://www.heihei.ru" write_to_console(f"\nunstable url is: {url}\n") return url

============================================================================== Tests ============================================================================== Tests.Test Title :: Example that opens single page ============================================================================== Starting a browser with a page unstable url is: https://www.heihei.ru Starting a browser with a page | FAIL | Title 'HeiHei.ru' (str) should be 'URN.SU' (str) …

API

from random import randrange from robot.api import logger def write_to_console(s: str): logger.console(s)

Не советую это делать в продакшен, но можно перегрузить функцию print()

from random import randrange from robot.api import logger # mode = "python" mode = "robot" if mode == "robot": def print(s: str): logger.console(s) def get_unstable_url() -> str: if randrange(2) == 1: url = "https://www.urn.su" else: url = "https://www.heihei.ru" print(f"\nunstable url is: {url}\n") return url

Если файлов, в которых вы перегружаете print() много - советую использовать конфиг

Чтобы отправить сообщение не в консоль, а в лог нужно заменить console на желаемый уровень лога (info, warn, debug, или trace).

Например, на info

from random import randrange from robot.api import logger def write_to_console(s: str): logger.info(s)

Robot www.urn.su
INFO
лог
Похожие статьи
Robot Framework
Архитектура
Логи
__init__.robot
Template
Пример с pywinauto
Изображение баннера

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: