Интерактивная отладка с тестами носа в PyDev - PullRequest
8 голосов
/ 03 ноября 2010

Я использую PyDev (с Aptana) для написания и отладки приложения Python Pylons, и я хотел бы пройтись по тестам в отладчике.

Можно ли запускать тесты носа через PyDev и останавливаться на точках останова?

Ответы [ 3 ]

2 голосов
/ 03 ноября 2010

Вот что я делаю, чтобы проводить тесты носа с помощью затмения Pydev (надеюсь, это поможет вам).

Прежде всего я создаю скрипт на python и помещаю его в корень моего каталога пакетов:

--Package
    |
    | -- runtest.py
    |
    | -- ... (others modules) 

и в runtest.py я положил:

import nose
nose.main()

Теперь я иду в меню Выполнить -> Выполнить настройки , и я создаю новую конфигурацию Pydev Django Я выбираю свой пакет и помещаю runtest.py в Основной модуль , затем я иду на вкладку аргументов в том же виджете и вставляю Аргументы программы путь к моему проекту и различные аргументы для передачи в примере скрипта:

/home/me/projects/src --with-doctest  # Run doctests too

теперь после нажатия Применить я могу запустить эту конфигурацию.

Для отладки вы можете запустить эту конфигурацию в режиме отладки и установить точку останова в любом месте своего кода, а также использовать потрясающий виджет отладки, чтобы выполнить несколько действий: шагнуть, чтобы увидеть переменные ...

NB: к сожалению, для doctests я не думаю, что вы можете поставить точку останова в строке doctest, но вы можете сделать это, чтобы поместить точку останова в определение функции, которая вызывается doctest, и так вы можете использовать режим отладки.

0 голосов
/ 15 июня 2013

У меня все получилось, то есть у меня нет точек останова и пошаговой работы, но я заставляю PyDev запускать тесты и отображать результаты в представлении PyUnit.

Когда вы запускаетемодульный тест, вам нужно переопределить тестовый прогон, чтобы использовать «нос» и аргументы командной строки «--with-pylons = path / to / test.ini» на вкладке аргументов конфигурации запуска.Например, я установил его на "--with-pylons = .. / .. / test.ini".К сожалению, я должен настроить это отдельно для каждого теста, который я запускаю, я не нашел способ поместить туда переменную или путь проекта.

Также, к сожалению, я не смог получить точки остановаза работой.Я попытался установить исправления в соответствии с рекомендациями http://pydev.blogspot.ca/2007/06/why-cant-pydev-debugger-work-with.html и их комментариями безрезультатно.YMMV.

В DecoratorTools-1.8-py2.7.egg / peak / util / decorators.py в decorate_assignment () заменить:

oldtrace = [frame.f_trace]

на

oldtrace = [sys.gettrace()]
0 голосов
/ 03 ноября 2010

Попробуйте import pydevd; pydevd.settrace(), где бы хотели точку останова.

...