How to use py.test from Python?

霸气de小男生 提交于 2019-12-03 11:43:20

问题


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 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 py.test 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.


回答1:


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(" "))



回答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'])

Ref : https://pytest.org/latest/usage.html#calling-pytest-from-python-code




回答3:


This is now supported by pytest and described nicely here in the documentation.




回答4:


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.




回答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.




回答6:


For me it was this:

pytest.main(["-x", "path to test file", "args"])

For example:

import pytest
pytest.main(["-x", "/api/test", "-vv"])



回答7:


You can just run py.test --pdb if you just want to a debugger and don't need the IDE



来源:https://stackoverflow.com/questions/3343205/how-to-use-py-test-from-python

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!