187

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

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

如果我右键单击项目工具窗口中的目录,我应该会看到一个“创建 <名称>”菜单项,但唯一以“创建”开头的菜单项是“创建运行配置”。好的,也许文档是错误的,“创建运行配置”听起来很有希望。不幸的是,其子菜单中仅有的两个项目是“C:\mypath... 中的单元测试”和“C:\mypath... 中的 Doctests”,这两者都不适用——我既没有使用 unittest,也没有使用 doctest。py.test 没有菜单项。

如果我打开我的 test_sample.py 并在编辑器窗口中单击鼠标右键,我会得到承诺的“创建 <name>”菜单项:有“在 test_sa 中创建 'Unittests ...'...”,然后是“运行'test_sa 中的单元测试 ...'”和“调试 'test_sa 中的单元测试 ...'”。再说一遍,这一切都特定于 unittest 框架;py.test 没有。

如果我尝试显示“unittest”的菜单项,我会看到一个对话框,其中包含“名称”、“类型”选项、“测试”组框以及“文件夹”和“模式”以及“脚本”和“类” " 和 "Function" 等。这听起来与文档中记录的为 Python Unit Test 添加配置的对话框完全一样,而不像应该显示的 "Name" 和 "Test to run" 和 "Keywords" 选项在py.test对话框的配置中。对话框中没有任何内容可以切换我要添加的测试框架。

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

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

4

13 回答 13

264

请前往File| Settings| Tools| Python Integrated Tools并将默认测试运行程序更改为 py.test。然后你会得到 py.test 选项来创建测试而不是 unittest 一个。

于 2011-06-18T16:23:50.037 回答
62

PyCharm 2017.3

  1. Preference -> Tools -> Python integrated Tools- 选择py.testDefault test runner
  2. 如果你使用 Django Preference -> 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-01-03T09:38:03.857 回答
20

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

我还发现手册与 UI 不匹配。希望我已经正确理解了这个问题,这会有所帮助。

于 2011-06-18T15:58:01.833 回答
18

以下是我如何使它与 pytest 3.7.2(通过 pip 安装)和 pycharms 一起工作2017.3

  1. edit configurations

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

  1. 在运行配置详细信息中,您需要将target=python和下面的未命名字段设置为tests. 看起来这是您的测试文件夹的名称。不太确定强硬。我还推荐这个-s参数,这样如果你调试你的测试,控制台就会正常运行。如果没有参数 pytest 会捕获输出并使调试控制台出错。

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

  1. 我的foobar_test.py文件:(不需要导入):
def test_foobar():
    打印(“你好 pytest”)
    断言真
  1. 使用正常的运行命令运行它

于 2018-09-03T16:20:53.940 回答
11

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

  1. 运行 > 编辑配置 > 添加 pytest
  2. 如下图所示设置选项 配置截图
  3. 单击调试(或使用例如热键 Shift+Alt+F9 运行 pytest)

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

于 2019-12-18T11:28:53.410 回答
6

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

你可以:

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

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

于 2016-04-30T19:15:55.470 回答
3

当我遇到同样的问题并找到解决方案 pycharm version:2017.1.2 时找到此线程 转到“首选项”->“工具”->“Python 集成工具”并从右侧面板将默认测试运行器设置为 py.test解决我的问题

于 2017-06-15T15:42:10.673 回答
2

我正在使用 2018.2

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

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

我设置了 Python 解释器。

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

于 2018-08-01T14:15:01.427 回答
1

为您的项目启用 Pytest

  1. 打开设置/首选项 | 工具 | Python 集成工具设置对话框,如选择您的测试框架中所述。
  2. Default test runner字段中选择pytest
  3. 单击确定以保存设置。

在此处输入图像描述

于 2019-12-05T21:55:41.620 回答
1

打开首选项窗口(Mac 上的 Command 键 + ","):

Python 首选项链接

1.工具

2.Python集成工具

3.默认测试运行器

python 默认测试运行器

于 2020-08-23T10:09:15.633 回答
0

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

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

于 2019-03-14T18:24:42.047 回答
0

使用一个特殊的 Conda python 设置,其中包括 py.test 的 pip 安装以及 Specs 插件的使用(选项 --spec)(对于 Rspec,比如漂亮的测试摘要语言),我必须这样做;

1.编辑默认的py.test以包含option=--spec,即使用插件:https ://github.com/pchomik/pytest-spec

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

3.删除'unittests'测试配置。

4.现在默认的测试配置是 py.test 和我可爱的 ​​Rspec 风格的输出。我喜欢它!谢谢大家!

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

于 2016-08-23T16:28:43.043 回答
0

有一个 PyCharm 文档:运行/调试配置:pytest自 2020 年 9 月起可用。

在此处输入图像描述

于 2021-03-03T22:39:01.023 回答