How to use `pytest` from Python?
Solution 1
I think I can now answer my own question, it's pretty simple:
import pytest
pytest.main(args)
which is documented in the Section "Calling pytest from Python code". 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"
args = args_str.split(" ")
pytest.main(args)
Solution 2
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'])
Solution 3
This is now supported by pytest and described nicely in the documentation.
You can invoke pytest from Python code directly:
import pytest pytest.main()
this acts as if you would call “pytest” from the command line. It will not raise SystemExit but return the exitcode instead. You can pass in options and arguments:
pytest.main(["-x", "mytestdir"])
Solution 4
For me it was this:
pytest.main(["-x", "path to test file", "args"])
For example:
import pytest
pytest.main(["-x", "/api/test", "-vv"])
Solution 5
Maybe you could give a try to pycharm it has direct integration with py.test (I use it at work) and debugger runs perfectly.
nikow
Updated on February 07, 2022Comments
-
nikow over 2 years
I'm working in a project that recently switched to the
pytest
unittest
framework. I was used to calling my tests from Eclipse, so that I can use the debugger (e.g. placing breakpoints to analyze how a test failure develops). Now this is no longer possible, since the only way to run the tests is via the command line blackbox.Is there some way to use
pytest
from within Python, so that one is not forced to drop out of the IDE? The tests should of course not be run in a separate process. -
nikow almost 14 yearsThanks, I was aware of the
--pdb
switch. I think in this case pdb is controlled and started by py.test, which won't work for Eclipse (I want my running Eclipse to take over the debugging). -
nikow almost 12 yearsThanks, for the suggestion. Just recently I had the chance to use PyCharm 2.5, and I agree that it works very well. Right now I'm kind of split between PyCharm and Aptana Studio.
-
Juan Antonio Gomez Moriano almost 12 years@nikow : I started using aptana... i hated it, also, if you get familiar with pycharm you can also go for phpstorm, rubymine, intellij... all these IDEs are from jetbrains, and have the same structure, shortcuts... So it is definately worth. I use to be an eclipse fan, but know jetbrains got me :)
-
Kostas Demiris over 10 years+1 for PyCharm . I was using Aptana for PHP but after using PyCharm I am going to gradually switch to JetBrain's products