Robot Framework отлаживает код Python с использованием PUDB

Я пытаюсь отлаживать код Python, выполняемый из Robot. Как было упомянуто здесь Брайаном Окли, есть возможность отладить его, используя:
import sys, pdb; pdb.Pdb(stdout=sys.__stdout__).set_trace()
Это хорошее решение, и это помогает много. Также есть отличный отладчик с текстовой графикой, который еще полезнее и проще в использовании и называется PUDB. . Я пытался заставить PUDB работать так же, как Брайан упомянул в своем ответе, но мне это не удалось.
Если кому-то удалось заставить его работать, поделитесь своим решением.
Спасибо.


person catoleg    schedule 18.01.2018    source источник
comment
Пожалуйста, покажите, что вы пробовали, и какую ошибку вы получили, если вы получили ошибку.   -  person Bryan Oakley    schedule 18.01.2018
comment
Я предполагаю, что вы знаете о функциях отладки Python в Eclipse, PyCharm и т. д. и предпочитаете pudb? Если нет, то большинство IDE имеют эту возможность, а плагин RED Eclipse позволяет одновременно выполнять отладку в контексте робота и в контексте Python.   -  person A. Kootstra    schedule 19.01.2018
comment
вот ссылка на документы: nokia.github.io/RED /help/user_guide/launching/debug/ , в примере используется отладчик pydevd. Вы можете использовать любой отладчик, если вы правильно запустите python+debugger+robot вместе, если точка останова будет активирована, действия пользователя должны выполняться либо из консоли, либо, как, например, из внешней IDE Python, которая прослушивает события отладчика.   -  person jozefow    schedule 21.01.2018
comment
пример командной строки, взятый из runPyDevDebug.py, указанный в справке: python -m ‹путь к pydevd› ‹настройки pydevd› --file ‹путь к run.py робота› ‹аргументы для run.py, такие как Suite и прочее› Надежда что помогает.   -  person jozefow    schedule 22.01.2018


Ответы (1)


Эквивалентом для pudb является создание экземпляра Debugger из pudb.debugger. Например:

import pudb.debugger
import sys

def example_keyword():
    ...
    pudb.debugger.Debugger(stdout=sys.__stdout__).set_trace()
    ...
person Bryan Oakley    schedule 18.01.2018