如何从Python使用py.test?

nik*_*kow 14 python pytest

我正在一个最近切换到py.test unittest框架的项目中工作.我习惯于从Eclipse调用我的测试,以便我可以使用调试器(例如,放置断点来分析测试失败的发展方式).现在这已经不可能了,因为运行测试的唯一方法是通过命令行blackbox.

有没有办法在Python中使用py.test,以便不会强行退出IDE?当然,测试不应该在单独的过程中运行.

nik*_*kow 21

我想我现在可以回答我自己的问题了,这很简单:

import py
py.test.cmdline.main(args)
Run Code Online (Sandbox Code Playgroud)

然后我可以运行此模块,或者使用集成调试器启动它.

args 是命令行参数的列表,所以例如,为了只运行特定的测试,我可以使用类似的东西:

args_str = "-k test_myfavorite"
py.test.cmdline.main(args_str.split(" "))
Run Code Online (Sandbox Code Playgroud)


Ric*_*ard 8

现在看来(py.test版本2.0+)有人也可以这样做:

import pytest

pytest.main('-x {0}'.format(argument))

# Or
# pytest.main(['-x', 'argument'])
Run Code Online (Sandbox Code Playgroud)

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


JJC*_*JJC 5

现在,这是由pytest支持,并很好地描述这里的文档。


Aka*_*all 5

对我来说是这样的:

pytest.main(["-x", "path to test file", "args"])
Run Code Online (Sandbox Code Playgroud)

例如:

import pytest
pytest.main(["-x", "/api/test", "-vv"])
Run Code Online (Sandbox Code Playgroud)