如何配置PyCharm以运行py.test测试?

我想开始为我的Python代码编写单元测试,PY.测试框架听起来比Python捆绑的单元测试更好。因此,我在项目中添加了一个“ tests ”目录,并在其中添加了测试_sample.py。现在,我想配置PyCharm以运行我的“测试”目录中的所有测试。

据称,PyCharm在其测试运行器中支持py.test。你应该能够创建运行/调试配置来运行你的测试,而PyCharm据说有一个专门针对py.test的“创建配置”对话框。但这就是他们关于这个主题的文档的完整范围,我在任何地方都找不到这个所谓的对话框。

如果我右键单击项目工具窗口中的目录,我假设以查看“ Create<;Name>;”菜单项,但唯一以“ Create ”开头的菜单项是“ CreateRunConfiguration ”。好吧,也许文档是错误的,“创建运行配置”听起来确实很有前途。不幸的是,它的子菜单中仅有的两个项目是“ C:\mypath.中的UnitTests ”和“ C:\mypath.中的docTests ”,这两个项目都不适用-我既没有使用UnitTest也没有使用docTest.py.test没有菜单项。

如果我打开我的测试_sample.py并在编辑器窗口中右键单击,我确实得到了承诺的“ Create<;Name>;”菜单项:有“ Create ' UnitTests in Test_sa.'.”,然后是" Run ' UnitTests in Test_sa.。同样,这都是特定于unittest框架的。py.test没有任何内容。

如果我尝试“单元测试”菜单项,我会得到一个对话框,其中包含“名称”、“类型”、“测试”分组框(包含“文件夹”和“模式”以及“脚本”和“类”以及“函数”等选项)。这听起来与文档中描述的用于添加Python单元测试的配置的对话框完全一样,而不像py.test的配置对话框中应该显示的“名称”、“要运行的测试”和“关键字”选项。对话框中没有任何东西可以切换我正在添加的测试框架。

我在Windows上使用PyCharm 1.5.2以及Python 3.1.3和PyTest 2.0.3。我可以从命令行成功地在我的测试中运行py.test,所以这不是像PyTest没有正确安装这样简单的事情。

如何配置PyCharm以运行py.test测试?

139357 次浏览

我认为您需要使用工具栏上的“运行/调试”配置项。单击它并选择“ Edit Configurations ”(编辑配置)(或者使用菜单项Run->Edit Configurations)。在左侧窗格的“ Defaults ”部分中,有一个“ py.test ”项,我认为这正是您想要的。

我还发现手册与用户界面不匹配。希望我对这个问题的理解是正确的,这对我有帮助。

请转到文件|设置|工具|Python集成工具,并将默认测试运行程序更改为py.test.

可以肯定的是,它的记录很少。从默认设置添加新配置后,您将进入运行“/applications/pycharm ce.app/contents/helpers/pycharm/pytestrunner.py ”脚本的领域。它没有文档记录,并且对命令行参数有自己的想法。

您可以:

  1. 尝试一下,反转脚本,看看是否可以以某种方式让py.test接受参数。它可能起作用;对我来说,前半个小时没有。
  2. 只需从控制台运行“ py.test*.py ”。

奇怪的是,你会发现很难找到任何讨论,因为JetBrains在用自己的页面轰炸谷歌算法方面做得很好。

有了一个特殊的Conda Python设置,其中包括py.test的pip安装,以及spec插件(选项--spec)的使用(对于RSpec,就像很好的测试摘要语言),我必须这样做。

1.编辑默认的py.test以包含选项=--spec,这意味着使用插件:https://github.com/pchomik/pytest-spec

2.使用py.test创建新的测试配置。将其Python解释器更改为使用~/anaconda/envs/您选择的解释器,例如py27用于我的命名。

3.删除“ unittests ”测试配置。

4.现在默认的测试配置是py.test,带有我可爱的RSpec风格的输出。我爱死了!谢谢大家!

P.S.JetBrains关于运行/调试配置的文档在这里:https://www.jetbrains.com/help/pycharm/2016.1/run-debug-configuration-py-test.html?search=py.test

当我遇到同样的问题并找到解决方案时,我

会找到这个帖子。 PyCharm版本:2017.1.2 转到“ Preferences ”->“ Tools ”->“ Python Integrated Tools ”并将右侧面板中的默认测试运行器设置为py.test 解决我的问题

PyCharm 2017.3

  1. Preference -> Tools -> Python integrated Tools-选择py.test作为Default test runner
  2. 如果使用DjangoPreference -> Languages&Frameworks -> Django-在Do not use Django Test runner上设置刻度
  3. Run/Debug configuration中清除所有先前存在的测试配置,否则将使用这些较旧的配置运行测试。
  4. 要设置一些默认的附加参数,请更新py.test默认配置。Run/Debug Configuration -> Defaults -> Python tests -> py.test -> Additional Arguments

我用的是2018.2

我运行->编辑配置.. 然后单击模式对话框左上角的+。 选择“ Python测试”->py.test 然后我给它起了一个名字,比如“ All test with py.test ”

我选择目标:模块名称 并放入我的测试所在的模块(即我的“测试”)或我的所有代码所在的模块(如果我的测试与我的代码混合在一起)。这把我绊倒了。

我设置了Python解释器。

我将工作目录设置为项目目录。

下面是我如何让它与PyTest3.7.2(通过pip安装)和PyCharms2017.3一起工作:

  1. 转至edit configurations

  1. 添加新的运行配置并选择py.test

  1. 在“运行配置详细信息”中,您需要将target设置为python,并将下面的未命名字段设置为tests。这似乎是您的测试文件夹的名称。不太确定很难。我还建议使用-s参数,以便在调试测试时,控制台可以正常运行。在没有参数的情况下,pytest捕获输出并使调试控制台错误百出。

  1. 我的测试文件夹看起来就像这样。这就在我的项目的根目录下(my_project/tests)。

  1. 我的foobar_test.py文件:(不需要导入):
def test_foobar():
print("hello pytest")
assert True
  1. 使用正常的运行命令运行它

在2018.3中,它似乎自动检测到我正在使用PyTest,这很好,但它仍然不允许从项目的顶层运行。我必须为每个tests目录分别运行pytest

然而,我发现我可以选择其中一个配置并手动编辑它,使其在项目的根目录下运行,这是可行的。我必须在“配置”下拉菜单中手动选择它-无法右键单击“项目”窗格中的根文件夹。但至少它允许我一次运行所有测试。

为项目启用PyTest

  1. 打开“设置/首选项|工具|Python集成工具设置”对话框,如选择测试框架中所述。
  2. 默认测试运行器字段中,选择Pytest
  3. 单击“确定”保存设置。

enter image description here

在PyCharm 2019.2中,您可以简单地执行以下操作来运行所有测试:

  1. 运行>编辑配置>添加PyTest
  2. 设置选项,如以下屏幕截图所示 screenshot of configuration
  3. 点击调试(或使用热键Shift+Alt+F9运行PyTest)

有关PyTest到PyCharm的更高集成,请参阅https://www.jetbrains.com/help/pycharm/pytest.html

打开偏好设置窗口(Command键+";,";在Mac上):

Python preferences link

1.工具

2.Python集成工具

3.默认测试运行器

python Default test runner

自2020年9月起,PyCharm文档:运行/调试配置:pytest可供使用。

enter image description here

我遇到了另一种情况,但同样的错误 (我无法通过这里的错误,因为已经修复了它)。

检查VENV中是否确实安装了pytest。 我在全球范围内安装了pytest,这让我很困惑。

如果pip表示已经安装了pytest-请检查它是哪种类型的pip(全局pip或Venv的pip)。

which python应该返回到您的Venv Python的路径。 然后python -m pip install pytest