问题标签 [pytest-cov]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - GitLab CI 的单元测试覆盖率
我正在尝试为其中一个 Python 项目设置单元测试覆盖率工具。我设法编写了 GitLab CI YML 文件的脚本,但在触发时会出错。这是我得到的错误:
在 中test_run.py
,我有以下导入:
这是我的 GitLab CI YML 文件:
我__init__.py
在 src 文件夹中有需要的东西。src 文件夹有一个名为 data 的子文件夹,我在单元测试中将其导入为:
有什么我想念的吗?
python - pytest-cov 如何报告由于 pexpect.spawn 而执行的 python 代码的覆盖率?
我有一个 Python 项目,它使用 pytest-cov 进行单元测试和代码覆盖率测量。
我的项目的目录结构是:
我使用 Travis 运行pytest --cov=rift tests
每次签入,并使用 codecov 查看代码覆盖率结果。
被测包提供了一个命令行界面(CLI),它从标准输入读取命令并在标准输出上产生输出。它以python rift
.
测试目录包含两种类型的测试。
第一类测试是测试单个类的传统单元测试。例如,测试 test_table.py 导入 table.py,并执行传统的 pytest 测试(使用 assert 等)。代码覆盖率测量对这些测试按预期工作:codecov 准确报告 rift 包中的哪些行被或未被覆盖测试。
第二种测试使用 pexpect:它用于pexpect.spawn("python rift")
启动 rift 包。然后它pexpect.sendline
用于将命令注入 CLI (stdin) 并用于pexpect.expect
检查 CLI (stdout) 上命令的输出。测试功能运行良好,但 codecov 没有报告这些测试的代码覆盖率。
问题:如何获得代码覆盖率测量结果以报告生成的裂痕包中的覆盖线,以使用 pexpect 进行第二类测试?
注意:我省略了几个我认为不相关的细节,完整的源代码在https://github.com/brunorijsman/rift-python(更新:这个 repo 现在包含答案中建议的工作解决方案)
python - 使覆盖仅计算成功的测试并忽略 xfailing 测试
我有许多项目,我使用pytest.mark.xfail
标记来标记失败但不应该失败的测试,以便可以在问题解决之前添加失败的测试用例。我不想跳过这些测试,因为如果我做的某件事导致它们开始通过,我想知道这一点,以便我可以删除xfail
标记以避免回归。
问题是,因为xfail
测试实际上一直运行到失败,所以导致失败的任何行都被计为“已覆盖”,即使它们是 no pass test 的一部分,这给了我关于我的代码实际上有多少的误导性指标测试为工作。一个最小的例子是:
包.py
test_pkg.py
运行python -m pytest --cov=pkg
,我得到:
如您所见,所有五行都被覆盖,但第 3 行和第 4 行仅在xfail
测试期间被命中。
我现在处理这个问题的方法是设置tox
运行类似的东西pytest -m "not xfail" --cov && pytest -m xfail
,但是除了有点麻烦之外,那只是过滤掉带有xfail
标记的东西,这意味着条件xfails 也会被过滤掉,无论是否条件满足。
有没有办法计算coverage
或pytest
不计算失败测试的覆盖率?或者,我可以使用一种忽略测试覆盖率的机制,如果满足条件xfail
,它只会忽略条件测试。xfail
python - codecov 无法使用 pytest 收集数据 - “Coverage.py 警告:未收集数据。”
我正在尝试在我的公共 travis 存储库上设置 codecov,但到目前为止还无法成功生成报告并将其上传到 codecov.io。我似乎在终端中收到了一个错误的报告,上面说我的代码的 0% 被覆盖并发出警告。
据我所知,我的 .travis.yml 和 shell 脚本完全符合 pytest-cov 和 codecov 文档中指定的约定。
我的 travis 终端包含完整的日志在这里:https ://www.travis-ci.com/jmaggio14/imagepypelines/jobs/163802897#L681
我的仓库可以在这里找到:https ://github.com/jmaggio14/imagepypelines/tree/89a6bbc2fadc94a51570d80be356941df1a87a87
我的(缩短的) .travis.yml 文件如下:
我最终收到以下警告和一条消息,说我的代码的 0% 已被我的测试覆盖
unit-testing - 具有线路覆盖率和最小限制的 Pytest 覆盖率,如业力/伊斯坦布尔
- 在 Karma 的 Instanbul 覆盖模块中,您可以为不同类型的覆盖设置阈值。如果某些覆盖率未达到其最小值,则 instanbul 会引发错误。这在使用 jenkins 构建项目时非常有用,您必须保持这样的限制。是否可以使用 pytest-cov 或任何其他模块获得类似的功能?
- pytest-cov 仅生成语句覆盖率。是否也可以获得行/代码覆盖率?
python - 在pytest中导入文件不匹配
我在包中有一个名称为“test”的文件,当我运行 pytest 时出现错误
如果我从文件中删除“测试”,它可以正常工作,但不幸的是我无法更改它。
所以问题是如何告诉 pytest 忽略这个文件?
pycharm - 如何让 PyCharm 了解某些文件/目录被排除在覆盖范围之外?
我如何让 PyCharm 了解某些文件/目录被排除在覆盖范围之外,因为现在它向我显示 venv 和测试等目录的“0% 文件,未覆盖”。
Alt+Shift+F6,我选择仅报告来自 src/ 目录的文件的 .coverage 文件,但 PyCharm 也向我显示其他文件和目录的覆盖率。我该如何解决?
python - .coveragerc 无法找到我想省略的文件
我正在使用和插件tox
自动运行我的测试。但是,我正在获取我在以下文件中省略的文件的覆盖率报告:pytest
pytest-cov
.coveragerc
似乎tox
不使用我的.coveragerc
. 我试图用 明确指定配置文件--cov-config={toxinidir}/.coveragerc
,但我再次得到相同的结果。
简化的项目结构:
这是我的tox.ini
:
这是我的.coveragerc
:
这是我的pytest.ini
:
我认为这已经足够了,但如果您需要更多输出/信息,请告诉我。
我该如何克服这个问题?
python - pytest结果是什么意思?
我正在学习用Python进行测试,现在我正在使用pytest-cov。
我尝试运行这个命令:
测试完成后,我得到了这样的报告:
有几件事让我仍然对我在文档中找不到的报告感到困惑:什么是 Stmts、Miss、Cover和Missing,如果Cover上的结果不是 100% 这意味着我的代码仍然很糟糕还是什么..?
python - python pytest-coverage:测试在测试中实际调用了模块定义
我对我拥有的一些 ctypes 代码有疑问,其中 pytest-coverage 过度夸大了我的“真实”测试覆盖率。
这是模块的样子(使用虚拟示例):
问题是,当我运行时pyest_coverage
,我的代码覆盖率显示为 100%,即使在我的单元测试中从未调用过python 。 add
另有说明,如果我不这样做
我希望我的报道反映这一点,这意味着我想反映add
“没有真正经过测试”。
选项
我的模块承受不起任何性能损失。我想到的一件事是这样做:
或者
但我担心这两种重组,为了测试,会影响代码的性能
有什么想法可以欺骗 pytest 或 pytest-coverage 不计add
为已覆盖,除非某些测试函数实际调用add
?