问题:如何配置PyCharm以运行py.test测试?
我想开始为我的Python代码编写单元测试,而py.test框架听起来比Python捆绑的unittest更好。因此,我向项目添加了“ tests”目录,并向其添加了test_sample.py。现在,我想配置PyCharm以运行“ tests”目录中的所有测试。
据称,PyCharm 在其测试运行程序中支持py.test。您应该能够创建运行/调试配置来运行测试,并且PyCharm据称具有专门用于py.test的“创建配置”对话框。但这是他们关于该主题的文档的完整范围,我无法在任何地方找到这个所谓的对话框。
如果在“项目”工具窗口中右键单击目录,则应该看到“创建<名称>”菜单项,但是唯一以“创建”开头的菜单项是“创建运行配置”。好的,也许文档只是错误的,“创建运行配置”听起来确实很有希望。不幸的是,其子菜单中仅有的两项是“ C:\ mypath …中的Unittests”和“ C:\ mypath …中的Doctests”,都不适用-我既未使用unittest也未使用doctest。py.test没有菜单项。
如果我打开test_sample.py并在编辑器窗口中单击鼠标右键,则会得到承诺的“创建<名称>”菜单项:有“在test_sa中创建’Unittests …’…”,然后是“运行” “ test_sa中的单元测试…”和“调试test_sa中的单元测试…”。同样,这都是单元测试框架所特有的。py.test没有。
如果我确实尝试显示“ unittest”的菜单项,则会出现一个对话框,其中包含“名称”,“类型”,带有“文件夹”,“模式”,“脚本”和“类”的“测试”组框”和“函数”等。这听起来与为Python单元测试添加配置的对话框所记录的内容完全不同,而不像应该显示的“名称”和“运行测试”以及“关键字”选项一样在py.test对话框的配置中。对话框中没有任何内容可以切换我要添加的测试框架。
我在Windows上使用Python 3.1.3和pytest 2.0.3的PyCharm 1.5.2。我可以从命令行成功运行py.test
测试,所以这不是像pytest未正确安装那样的简单操作。
如何配置PyCharm以运行py.test测试?
回答 0
请转到文件| 设置| 工具| Python Integrated Tools,并将默认测试运行程序更改为py.test。然后,您将获得py.test选项来创建测试,而不是unittest。
回答 1
PyCharm 2017.3
Preference -> Tools -> Python integrated Tools
-选择py.test
为Default test runner
。- 如果您使用Django-
Preference -> Languages&Frameworks -> Django
勾选Do not use Django Test runner
- 从中清除所有以前存在的测试配置
Run/Debug configuration
,否则将使用这些较旧的配置运行测试。 - 要设置一些默认的其他参数,请更新py.test默认配置。
Run/Debug Configuration -> Defaults -> Python tests -> py.test -> Additional Arguments
回答 2
我认为您需要使用工具栏上的“运行/调试配置”项。单击它并单击“编辑配置”(或使用菜单项“运行”->“编辑配置”)。在左侧窗格的“默认”部分中,有一个“ py.test”项,我认为这是您想要的。
我还发现该手册与此用户界面不匹配。希望我正确理解了这个问题,对您有所帮助。
回答 3
这是我使它与pytest 3.7.2
(通过pip安装)和pycharms一起工作的方式2017.3
:
- 去
edit configurations
- 添加一个新的运行配置并选择
py.test
- 在运行配置详细信息中,您需要将
target
=python
和下面的未命名字段设置为tests
。看起来这是您的测试文件夹的名称。不太确定强硬。我还建议使用该-s
参数,以便在调试测试时,控制台将正常运行。没有参数pytest会捕获输出,并使调试控制台出错。
- 我的测试文件夹如下所示。这刚好在我的项目(
my_project/tests
)的根目录之下。
- 我的
foobar_test.py
文件:(无需导入):
def test_foobar(): 打印(“ Hello pytest”) 断言为真
- 使用常规运行命令运行它
回答 4
可以肯定地说,它的文献不多。从默认设置添加新配置后,您将可以运行“ / Applications / PyCharm CE.app/Contents/helpers/pycharm/pytestrunner.py”脚本。它没有记录,并且有自己的命令行参数构想。
您可以:
- 尝试玩一下,反转脚本,看看是否可以使py.test接受参数。它可能会起作用;上半个小时对我来说不是。
- 只需从控制台运行“ py.test * .py”即可。
奇怪的是,您很难找到任何讨论,因为JetBrains擅长用自己的页面轰炸Google算法。
回答 5
当我遇到相同的问题并找到解决方案pycharm版本时找到此线程:2017.1.2转到“首选项”->“工具”->“ Python集成工具”,然后从右侧面板中将默认测试运行器设置为py.test解决我的问题
回答 6
在pycharm 2019.2中,您可以简单地执行以下操作以运行所有测试:
有关pytest与pycharm的更高集成,请参阅https://www.jetbrains.com/help/pycharm/pytest.html
回答 7
我正在使用2018.2
我运行->编辑配置…然后单击模式对话框左上方的+。选择“ python测试”-> py.test然后给它一个名称,例如“使用py.test进行所有测试”
我选择“目标:模块名称”,然后将测试放在其中的模块(对我来说就是“测试”),或者将测试与代码混合在一起的地方放在所有代码所在的模块中。这让我不寒而栗。
我设置了Python解释器。
我将工作目录设置为项目目录。
回答 8
使用特殊的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
回答 9
在2018.3中,它似乎会自动检测到我正在使用pytest,这很好,但是仍然不允许从项目的顶层运行。我必须分别pytest
为每个tests
目录运行。
但是,我发现我可以选择一种配置,然后手动对其进行编辑以在项目的根目录下运行,并且可以正常工作。我必须在“配置”下拉列表中手动选择它-不能右键单击“项目”窗格中的根文件夹。但是至少它允许我同时运行所有测试。
回答 10
为您的项目启用Pytest
- 打开设置/首选项| 工具| 如选择测试框架中所述的Python Integrated Tools设置对话框。
- 在默认测试运行器字段中,选择pytest。
- 单击确定以保存设置。