Как сохранить контекст/состояние pdb при открытии в новом окне xterm во время выполнения роботаPython

Программы на Python
Ответить
Anonymous
 Как сохранить контекст/состояние pdb при открытии в новом окне xterm во время выполнения робота

Сообщение Anonymous »

Обзор проблемы:
Я пытаюсь реализовать прослушиватель в Robot Framework, который открывает новое окно xterm с pdb для интерактивной отладки во время выполнения тестовый пример. Цель состоит в том, чтобы предоставить пользователю возможность отлаживать тестовый пример, вызывая паузу, позволяя им проверять переменные и состояние теста.
Вот пример тестового примера, который я запускаю. :
*** Settings ***
Library BuiltIn

*** Variables ***
${PAUSE_FLAG} True

*** Test Cases ***
Test Without Debug
Log This test runs normally.

Test With Debug
Log This test will trigger a pause.

Test With Pause Flag
[Documentation] This test pauses after execution due to ${PAUSE_FLAG}.
Log Check if ${PAUSE_FLAG} is True.

Текущий код прослушивателя:
import pdb
import subprocess
from robot.api import logger
from robot.libraries.BuiltIn import BuiltIn

flag = True

class TestListener:
ROBOT_LISTENER_API_VERSION = 3

def start_test(self, name, attrs):
"""
Trigger a pause when the test starts if the test name contains 'Debug'.
Opens an xterm window running pdb to start debugging.
"""
if flag:
subprocess.Popen([
"xterm",
"-e",
f"python -c 'import pdb; pdb.set_trace()'"
])

def end_test(self, name, attrs):
"""
Trigger a pause at the end of the test if the ${PAUSE_FLAG} variable is True.
"""
pause_flag = BuiltIn().get_variable_value("${PAUSE_FLAG}", False)
if pause_flag:
logger.console(f"Pausing execution at the end of test: {name}")
pdb.set_trace()

Возникла проблема:
Проблема, с которой я столкнулся, заключается в том, что после открытия окна xterm с помощью отладчика pdb , он не поддерживает правильное состояние тестового примера. В частности, я не могу получить имена переменных, а отладчик не связан с текущим выполняемым тестовым примером. Это затрудняет проверку переменных или состояния теста во время отладки.
В открывшемся новом окне xterm я попытался запустить следующие команды:
from robot.libraries.BuiltIn import BuiltIn
print(BuiltIn().get_variables())

Ожидание
Я ожидал получить все переменные, определенные в файле робота.
Реальность
Я получил следующее сообщение об ошибке:
*** robot.libraries.BuiltIn.RobotNotRunningError: Cannot access execution context


Подробнее здесь: https://stackoverflow.com/questions/793 ... w-during-r
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»