I\'m working in a project that recently switched to the py.test unittest framework. I was used to call my tests from Eclipse, so that I can use the debugger (e.g. placing br
Maybe you could give a try to pycharm it has direct integration with py.test (I use it at work) and debugger runs perfectly.
You can just run py.test --pdb
if you just want to a debugger and don't need the IDE
I have not tried with eclipse, but as was suggested in a related question, it is possible to use the --pdb
command line option with py.test
. Maybe it is possible to configure eclipse that way.
However, calling the standard import pdb;pdb.set_trace()
will not directly call the debugger. First it will issue an error which in turn will activate the debugger. This might or might not make things work differently.
For me it was this:
pytest.main(["-x", "path to test file", "args"])
For example:
import pytest
pytest.main(["-x", "/api/test", "-vv"])
I think I can now answer my own question, it's pretty simple:
import py
py.test.cmdline.main(args)
Then I can run this module and or start it with the integrated debugger.
args
is the list of command line arguments, so for example to run only particular tests I can use something like:
args_str = "-k test_myfavorite"
py.test.cmdline.main(args_str.split(" "))
It seems that now (py.test version 2.0+) someone can also do this :
import pytest
pytest.main('-x {0}'.format(argument))
# Or
# pytest.main(['-x', 'argument'])
Ref : https://pytest.org/latest/usage.html#calling-pytest-from-python-code