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

204 投票
15 回答
161422 浏览
提问于 2025-04-16 19:49

我想开始为我的Python代码写单元测试,听说py.test框架比Python自带的unittest更好用。所以我在我的项目里添加了一个“tests”目录,并在里面放了test_sample.py文件。现在我想配置PyCharm,让它能运行我“tests”目录里的所有测试。

据说PyCharm的测试运行器支持py.test。你应该能创建一个运行/调试配置来运行你的测试,而且PyCharm据说有一个专门为py.test设计的“创建配置”对话框。不过,这就是他们在这方面的全部文档,而我在任何地方都找不到这个对话框。

如果我在项目工具窗口里右键点击这个目录,我应该能看到一个“创建<名称>”的菜单项,但唯一以“创建”开头的菜单项是“创建运行配置”。好吧,也许文档写错了,而“创建运行配置”听起来确实不错。不幸的是,它的子菜单里只有两个选项:“C:\mypath...中的单元测试”和“C:\mypath...中的文档测试”,这两个都不适用——我既不使用unittest也不使用doctest。没有关于py.test的菜单项。

如果我打开test_sample.py并在编辑窗口右键点击,我确实能看到承诺的“创建<名称>”菜单项:有“创建'test_sa...'中的单元测试...”,接着是“运行'test_sa...'中的单元测试”和“调试'test_sa...'中的单元测试”。所以再次强调,这些都是针对unittest框架的;没有关于py.test的内容。

如果我尝试那些标记为“unittest”的菜单项,我会看到一个对话框,里面有“名称”、“类型”、“测试”组框,里面有“文件夹”、“模式”、“脚本”、“类”和“函数”等选项。这听起来完全像是文档中描述的用于添加Python单元测试配置的对话框,而不是应该出现在py.test配置对话框中的“名称”、“要运行的测试”和“关键字”等选项。对话框里没有任何选项可以切换我正在添加的测试框架。

我在Windows上使用的是PyCharm 1.5.2,Python版本是3.1.3,pytest版本是2.0.3。我可以在命令行上成功运行py.test来测试我的代码,所以这不是pytest没有正确安装这样简单的问题。

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

15 个回答

21

我觉得你需要在工具栏上找到“运行/调试配置”这个选项。点击它,然后选择“编辑配置”(或者你也可以通过菜单选择“运行”->“编辑配置”)。在左边的“默认”部分,有一个“py.test”的选项,我觉得这就是你需要的。

我还发现手册上的内容和界面不太一致。希望我理解的问题是对的,这些信息能帮到你。

76

PyCharm 2017.3

  1. 首先,去设置里找到 Preference -> Tools -> Python integrated Tools,然后把 py.test 选成默认的测试工具。
  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
298

请去 文件 | 设置 | 工具 | Python 集成工具,把默认的测试运行器改成 py.test。这样你就可以选择用 py.test 来创建测试,而不是用 unittest。

撰写回答