如何使用Python中的“pytest”?

如何使用Python中的“pytest”?,python,eclipse,testing,pytest,pdb,Python,Eclipse,Testing,Pytest,Pdb,我在一个项目中工作,该项目最近切换到框架。我习惯于从Eclipse调用我的测试,这样我就可以使用调试器(例如,放置断点来分析测试失败是如何发展的)。现在这已经不可能了,因为运行测试的唯一方法是通过命令行blackbox 是否有某种方法可以在Python中使用pytest,这样就不会被迫退出IDE?当然,这些测试不应该在单独的进程中运行。我没有尝试使用eclipse,但正如a中所建议的,可以将--pdb命令行选项与py.test一起使用。也许可以用这种方式配置eclipse 但是,调用标准导入pd

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


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

我没有尝试使用eclipse,但正如a中所建议的,可以将
--pdb
命令行选项与
py.test
一起使用。也许可以用这种方式配置eclipse


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

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

导入pytest
pytest.main(args)
这在本节中有记录。 然后我可以运行此模块和/或使用集成调试器启动它

args
是命令行参数列表,因此,例如,要仅运行特定测试,我可以使用以下命令:

args_str=“-k test_myfavorite”
args=args_str.split(“”)
pytest.main(args)

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

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

import pytest

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

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

Ref:

这现在由pytest支持,并在中进行了很好的描述

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

import pytest
pytest.main()
这就像从命令行调用“pytest”。它不会引发SystemExit,而是返回exitcode。您可以传入选项和参数:

pytest.main(["-x", "mytestdir"])

如果您只想使用调试器,而不需要IDE,则可以运行
py.test--pdb
,对我来说,它是这样的:

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

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

谢谢,我注意到了
--pdb
开关。我认为在本例中,pdb是由py.test控制和启动的,这对Eclipse不起作用(我希望运行的Eclipse接管调试)。谢谢您的建议。就在最近,我有机会使用PyCharm 2.5,我同意它工作得非常好。现在我被PyCharm和Aptana工作室分开了。@nikow:我开始使用Aptana。。。我讨厌它,而且,如果你熟悉pycharm,你也可以选择phpstorm,rubymine,intellij。。。所有这些IDE都来自jetbrains,具有相同的结构、快捷方式。。。所以它绝对值得。我曾经是月食迷,但我知道jetbrains让我:)+1代表PyCharm。我使用Aptana for PHP,但在使用PyCharm之后,我将逐渐转向JetBrain的产品