The oslotest package also distributes a shell file that may be used to assist in debugging python code. The shell file uses testtools, and supports debugging with pdb.
The typical usage to break into the debugger from a running program is to insert:
import pdb; pdb.set_trace()
Within the tox.ini
file of your project add the following:
[testenv:debug]
commands = oslo_debug_helper {posargs}
If the project name, and the module that precedes the tests directory do not match, then consider passing a -t argument to oslo_debug_helper to indicate the directory where tests are located.
For example, the python-keystoneclient
project has tests in
keystoneclient/tests
, thus it would have to pass in:
[testenv:debug]
commands = oslo_debug_helper -t keystoneclient/tests {posargs}
Similarly, most oslo
projects have the tests at the package level, it
would have to pass in:
[testenv:debug]
commands = oslo_debug_helper -t tests {posargs}
To enable debugging, run tox with the debug
environment:
$ tox -e debug
$ tox -e debug test_notifications
$ tox -e debug test_notifications.NotificationsTestCase
$ tox -e debug test_notifications.NotificationsTestCase.test_send_notification
Which results in an interactive prompt:
> /opt/stack/ceilometer/ceilometer/tests/identity/test_notifications.py(106)notification_for_role_change()
-> action_name = '%s.%s' % (action, ROLE_ASSIGNMENT)
(Pdb)
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.