20

我正在一个最近切换到框架的项目中工作。我习惯于从 Eclipse 调用我的测试,这样我就可以使用调试器(例如,放置断点来分析测试失败是如何发展的)。现在这不再可能,因为运行测试的唯一方法是通过命令行黑盒。pytest unittest

有什么方法可以pytest在 Python 中使用,这样就不会被迫退出 IDE?测试当然不应该在单独的进程中运行。

4

7 回答 7

33

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

import pytest

pytest.main(args)

这在“从 Python 代码调用 pytest”一节中有记录。然后我可以运行这个模块和/或使用集成调试器启动它。

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

args_str = "-k test_myfavorite"
args = args_str.split(" ")
pytest.main(args)
于 2010-07-27T21:22:50.253 回答
11

似乎现在(py.test 2.0+ 版)有人也可以这样做:

import pytest

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

# Or
# pytest.main(['-x', 'argument'])

参考

于 2015-09-25T13:30:15.747 回答
7

这现在由 pytest 支持,并在文档中得到了很好的描述。

您可以直接从 Python 代码调用 pytest:

import pytest
pytest.main()

这就像您从命令行调用“pytest”一样。它不会引发 SystemExit 而是返回退出代码。您可以传入选项和参数:

pytest.main(["-x", "mytestdir"])
于 2017-01-12T15:02:43.007 回答
5

对我来说是这样的:

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

例如:

import pytest
pytest.main(["-x", "/api/test", "-vv"])
于 2018-09-25T00:37:27.430 回答
2

也许您可以尝试pycharm它与 py.test 直接集成(我在工作中使用它)并且调试器运行完美。

于 2012-08-31T01:56:36.557 回答
1

我没有尝试过使用 eclipse,但正如在相关问题中所建议的那样,可以将--pdb命令行选项与py.test. 也许可以这样配置eclipse。

但是,调用标准import pdb;pdb.set_trace()不会直接调用调试器。首先,它会发出一个错误,进而激活调试器。这可能会也可能不会使事情变得不同。

于 2010-07-27T12:23:02.063 回答
0

py.test --pdb如果您只想使用调试器而不需要 IDE,则可以运行

于 2018-02-12T22:40:19.930 回答