我想开始为我的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中的Doctests ......”,两者都不适用 - 我既不使用unittest也不使用doctest。 py.test没有菜单项。
如果我打开test_sample.py并在编辑器窗口中右键单击,我会得到承诺的“创建< name>”菜单项:在test_sa中创建单元测试...'...,然后在test_sa中运行'单元测试......'“和在test_sa中调试'单元测试......'”。所以,这一切都与unittest框架有关; py.test没什么。
如果我尝试使用“unittest”的菜单项,我会看到一个对话框,其中包含“名称”,“类型”,“测试”组框,其中包含“文件夹”,“模式”和“脚本”和“类”和“功能”等。这听起来就像添加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测试?
答案 0 :(得分:203)
请转到文件|设置|工具| Python集成工具并将默认测试运行器更改为py.test。然后你将得到py.test选项来创建测试而不是单元测试。
答案 1 :(得分:31)
PyCharm 2017.3
Preference -> Tools -> Python integrated Tools
- 选择py.test
为Default test runner
。Preference -> Languages&Frameworks -> Django
- 请在Do not use Django Test runner
Run/Debug configuration
清除所有以前存在的测试配置,否则将使用这些旧配置运行测试。 Run/Debug Configuration -> Defaults -> Python tests -> py.test -> Additional Arguments
答案 2 :(得分:17)
我认为您需要使用工具栏上的“运行/调试配置”项。单击它并“编辑配置”(或者使用菜单项Run-> Edit Configurations)。在左侧窗格的“默认值”部分中,有一个'py.test'项,我认为这就是您想要的。
我还发现手册与用户界面不匹配。希望我能正确理解这个问题,这有帮助。
答案 3 :(得分:5)
记录不足以确定无疑。从默认值添加新配置后,您将处于运行" / Applications / PyCharm CE.app/Contents/helpers/pycharm/pytestrunner.py"脚本。它没有记录,并且有自己的命令行参数的想法。
你可以:
奇怪的是,你会发现很难找到任何讨论,因为JetBrains在使用自己的网页轰炸谷歌算法方面做得很好。
答案 4 :(得分:5)
这是我如何与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(): print("hello pytest") assert True
答案 5 :(得分:3)
当我遇到同样的问题并找到解决方案时找到这个帖子 pycharm版本:2017.1.2 转到"偏好" - > "工具" - > " Python集成工具"并将右侧面板的默认测试运行器设置为py.test 解决我的问题
答案 6 :(得分:2)
我正在使用2018.2
我运行->编辑配置... 然后,单击模式对话框左上方的+。 选择“ python测试”-> py.test 然后给它起一个名字,例如“使用py.test进行所有测试”
我选择目标:模块名称 并将其放入我的测试所在的模块中(对我来说就是“测试”),或者将我的所有测试代码与我的代码混合在一起的模块放入其中。这让我不寒而栗。
我设置了Python解释器。
我将工作目录设置为项目目录。
答案 7 :(得分: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.现在默认测试配置是py.test,带有可爱的Rspec样式输出。我喜欢它!谢谢大家!
P.S。 Jetbrains的运行/调试配置文档在这里:https://www.jetbrains.com/help/pycharm/2016.1/run-debug-configuration-py-test.html?search=py.test
答案 8 :(得分:0)
在2018.3中,它似乎会自动检测到我正在使用pytest,这很好,但是仍然不允许从项目的顶层运行。我必须为每个pytest
目录分别运行tests
。
但是,我发现我可以选择一种配置,然后手动对其进行编辑以在项目的根目录中运行,并且可以正常工作。我必须在“配置”下拉列表中手动选择它-不能右键单击“项目”窗格中的根文件夹。但是至少它可以让我一次运行所有测试。
答案 9 :(得分:0)
答案 10 :(得分:0)
在pycharm 2019.2中,您只需执行以下操作即可运行所有测试:
有关pytest与pycharm的更高集成,请参见https://www.jetbrains.com/help/pycharm/pytest.html
答案 11 :(得分:0)
答案 12 :(得分:0)
PyCharm 文档:Last
自 2020 年 9 月起可用。