首页 文章

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

提问于
浏览
122

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

据称,PyCharm在其试车员中也是如此 . 你应该能够create a run/debug configuration来运行你的测试,据说PyCharm有一个"create configuration" dialog box specifically for py.test . 但那个's the complete extent of their documentation on the subject, and I can' t在任何地方找到这个所谓的对话框 .

如果我右键单击“项目”工具窗口中的目录,我将supposed看到"Create <name>"菜单项,但唯一以"Create"开头的菜单项是"Create Run Configuration" . 好吧,也许文档是错误的,"Create Run Configuration"确实听起来很有希望 . 不幸的是,它的子菜单中只有两个项目是"Unittests in C:\mypath..."和"Doctests in C:\mypath...",两者都不适用 - 我既不使用unittest也不使用doctest . py.test没有菜单项 .

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

如果我确实尝试了"unittest"的菜单项,我会得到一个对话框,其中包含"Name","Type","Tests"和"Pattern"和"Script"以及"Class"和"Function"等组合框的选项 . 这听起来就像对话框一样添加configuration for Python Unit Test,而不是像configuration for py.test对话框中显示的"Name"和"Test to run"和"Keywords"选项 . 有's nothing inside the dialog to switch which test framework I' m添加 .

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

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

8 回答

  • 5

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

  • 193

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

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

  • 2

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

    您可以:

    • 尝试四处游戏,反转脚本,看看你是否能以某种方式让py.test接受参数 . 它可能有用;它对我来说不是在前半个小时 .

    • 只需从控制台运行"py.test *.py"即可 .

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

  • 0

    以下是我使用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
    
    • 使用正常运行命令运行它

  • 2

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

  • 23

    PyCharm 2017.3

    • Preference -> Tools -> Python integrated Tools - 选择 py.testDefault 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

  • 3

    使用特殊的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

  • 16

    我正在使用2018.2

    我执行Run - > Edit Configurations ...然后单击模态对话框左上角的 . 选择“python tests” - > py.test然后我给它起一个名字,如“所有测试用py.test”

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

    我设置了Python解释器 .

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

相关问题