Мне бы хотелось увидеть последние 10 строк, которые были выполнены интерпретатором python до этого исключения:
test_has_perm_in_foobar.py F
Traceback (most recent call last):
File "/.../test_has_perm_in_foobar.py", line 50, in test_has_perm
self.assertFalse(check_perm(request, some_object))
File "/usr/lib/python2.7/unittest/case.py", line 416, in assertFalse
raise self.failureException(msg)
AssertionError: True is not false
Я хочу посмотреть, где check_perm()
вернулся True
.
Я знаю, что я могу использовать интерактивную отладку, чтобы найти подходящую строку, но я ленив и хочу найти более простой способ для строки, где check_perm()
возвращает возвращаемое значение.
Я использую pyCharm, но инструмент, основанный на тексте, также решит мою потребность.
BTW: Пожалуйста, не говорите мне, как использовать отладчик с переходом и входом. Я знаю это.
Вот некоторый код, чтобы проиллюстрировать его.
def check_perm(request, some_object):
if condition_1:
return True
if condition_2:
return sub_check(some_object)
if condition_3:
return sub_check2(some_object)
...
Существует несколько способов возврата check_perm()
True
. Если True
было возвращено из-за условия_1, то я хочу увидеть что-то вроде этого
+ if condition_1:
+ return True
Вывод, который я имею в виду, похож на set -x
на оболочку.
Update
cgitb, pytest и другие инструменты могут показывать строки перед строкой, где утверждение не выполнено. НО, они отображают только строки текущего файла python. Этот вопрос касается строк, которые были выполнены до утверждения, но охватывающих все файлы. В моем случае я хочу знать, где было создано возвращаемое значение check_perm()
. Инструменты pytest, cgitb,... не показывают этого.
То, что я ищу, похоже на set -x
на оболочке:
help set
-x Печатать команды и их аргументы по мере их выполнения.