Pycharm:如何运行单个 pytest 而不是全部?

问题描述 投票:0回答:3

我在 PyCharm 中使用 pytest (2022.3)。

我只想运行单个测试函数或单个测试文件。

项目结构和测试

我的项目结构如下所示:

project
  -src
  -tests
    -test_func_a.py
    -test_func_b.py

两个测试文件都包含标准 pytest 形式的多个函数,例如:

def test_func_a_smth():
    assert x == y

问题

当我尝试运行

test_func_a
时,会创建以下配置: PyCharm Dialog: Run Configuration for pytest

但是 PyCharm 完全运行所有测试文件。

我尝试解决的问题

到目前为止我所做的:

  • 检查内容根是否设置为
    project
    tests
    标记为“测试源根”。
  • 将工作目录更改为项目。
  • 更新了 anaconda 上的 pytest。
  • 在设置中将 pytest 设置为默认测试运行程序(工具 -> Python 集成工具)

这些都没有帮助。

如何只执行单个测试文件?

pycharm pytest
3个回答
0
投票

听起来您在执行单个文件时遇到了问题。 Pycharm 喜欢重新运行最后运行的东西,所以也许你运行了所有测试并且它想继续这样做。 试试这些:

  1. 右键单击要在项目目录中运行的各个测试用例的文件名,然后从那里选择“在...中运行测试”

  2. 打开包含测试的单个文件,然后在文件中按 ctrl-shift-r(运行此文件)

  3. 您还应该看到文件中各个测试旁边的绿色小箭头,您可以单独选择它们。

在运行了几个不同的操作后,如果您想重复,标题栏中运行选项旁边的“下拉”菜单将显示您已完成的不同操作。 我通常只是从我所在的地方使用 ctrl-shift-r。


0
投票

首先,工作目录要与项目目录相同。

我也有同样的问题。对我有帮助的是修复 pytest.ini_options。我改变了这个:

addopts = " -s --cov=./ --cov-report term-missing tests/ -v"

对此:

addopts = "-s -v --cov=./ --cov-report term-missing"

此后一切正常。


0
投票

我在 Pycharm

2024.1.3
上也遇到了类似的问题,所有测试都是在单击单个测试左侧的绿色箭头后运行的。

禁用测试覆盖率,在 Pytest 配置中使用

--no-cov
参数为我解决了这个问题。

Pycharm test configuration window screenshot

一步一步:

  1. 从右上角的运行/调试配置下拉列表中,单击编辑配置...
  2. 选择并删除所有现有的 Python 测试配置(使用列表上方的 -
  3. 编辑配置模板...(位于配置列表底部)
  4. 选择 Python 测试 > pytest 模板
  5. 其他参数
    中添加--no-cov
  6. 单击 OK 两次保存更改
  7. 重试运行单个测试
© www.soinside.com 2019 - 2024. All rights reserved.