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

问题描述 投票:132回答:9

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

据称PyCharm是supports py.test的试车手。你应该能够create a run/debug configuration进行你的测试,据说PyCharm有一个"create configuration" dialog box specifically for py.test。但这是关于这个主题的文档的完整范围,我无法在任何地方找到这个所谓的对话框。

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

如果我打开我的test_sample.py并在编辑器窗口中右键单击,我会得到承诺的“创建<名称>”菜单项:在“test_sa ...”中创建“单位测试”,然后“运行” '在test_sa中运行单元测试...'“和在test_sa中调试'单元测试......'”。所以,这一切都与unittest框架有关; py.test没什么。

如果我尝试使用“unittest”的菜单项,我会看到一个对话框,其中包含“Name”,“Type”,“Tests”组框,其中包含“Folder”和“Pattern”,“Script”和“Class” “和”功能“,等等。这听起来就像添加了configuration for Python Unit Test的对话框,而不是像configuration for py.test对话框中显示的”名称“和”测试运行“和”关键字“选项。对话框中没有任何内容可以切换我添加的测试框架。

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

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

python pycharm pytest
9个回答
208
投票

请转到文件|设置|工具| Python集成工具并将默认测试运行器更改为py.test。然后你将得到py.test选项来创建测试而不是单元测试。


33
投票

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

17
投票

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

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


5
投票

可靠的文件很难记录。从默认设置添加新配置后,您将处于运行“/ Applications / PyCharm CE.app/Contents/helpers/pycharm/pytestrunner.py”脚本的领域。它没有记录,并且有自己的命令行参数的想法。

您可以:

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

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


5
投票

以下是我使用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():
    print("hello pytest")
    assert True
  1. 使用正常运行命令运行它


3
投票

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


2
投票

我正在使用2018.2

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

我选择目标:模块名称并放入我的测试所在的模块(对我来说是'测试')或我的所有代码所在的模块(如果我的测试与我的代码混合在一起)。这让我感到沮丧。

我设置了Python解释器。

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


0
投票

使用一个特殊的Conda python设置,其中包括py.test的pip安装以及Specs addin(选项--spec)的使用(对于Rspec,如同很好的测试汇总语言),我必须这样做;

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

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

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

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

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.