问题标签 [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.

0 投票
2 回答
1045 浏览

python - 如何修复 pytest 标记不接受测试

我在 src/com/xyz/tests/bla_tests/file1.py 有我的测试。我在那个路径上也有 file2.py。

我在 file1.py 中有以下代码

从命令行我调用测试:

我的目标是将跨各种文件的多个测试标记为回归测试,并能够从命令行运行它们。(在 Mac 上)。以下命令虽然能够收集测试

有人可以帮我吗?

0 投票
3 回答
2268 浏览

python - Pytest coverage.py 错误

我对python代码和运行命令pytest --cov进行了单元测试,测试运行良好,但没有显示覆盖率并且错误是

需要帮助解决这个问题?

0 投票
2 回答
1030 浏览

python - 尽管有 100% 的覆盖率报告,如何找到在 coverage.py 中从未执行过的代码

考虑以下代码:

测试可以这样执行:

覆盖率报告将考虑 100% 覆盖的所有行,即使启用了分支覆盖率:

排队

但是,这段代码有一个错误,有敏锐眼光的人可能已经看到了。如果它进入“else”分支,将会有一个例外:

修复错误很容易:将未定义的j名称更改为文字1j。添加另一个可以揭示错误的测试也很容易:assert dumb_sqrt(-9.) == 3j. 这个问题所问的也不是什么。我想知道如何找到尽管有 100% 的代码覆盖率报告但从未实际执行过的代码部分。

使用条件表达式就是这样的罪魁祸首之一,但在 Python 可以使评估短路的任何地方都有类似的情况(x or y其他x and y示例)。

最好,上面的第 4 行可以在报告中被着色为黄色,类似于如果首先避免使用条件表达式,“if”行的呈现方式:

长

是否coverage.py支持这样的功能?如果是这样,您如何在您的 cov 报告中启用“内联分支覆盖”?如果没有,是否有任何其他方法可以识别您的测试套件从未实际执行过的“隐藏”代码?

0 投票
0 回答
567 浏览

python - 如何根据其覆盖范围使 github 操作失败/通过?

我有一个 python 项目,我在其中使用 pytest 和 pytest-cov 创建了一些测试。我想添加一个 github 操作,如果覆盖率低于某个任意 x 数,它将运行覆盖率测试并失败。最好的方法是什么?

0 投票
3 回答
11148 浏览

python - 警告:无法生成报告:使用 pytest 模块在 python 中没有数据报告错误

示例.py 代码:

覆盖命令:pytest test_sample.py --cov=sample.py

错误:

谁能帮我解决这个错误?

0 投票
1 回答
2707 浏览

github - Python project code coverage badge with coveralls / github actions

I'm trying to add a code coverage % badge to my repos README.md

I'm currently using Github actions to automate my pytest testing. I had that working on its own, but ive been struggling trying to get the coverage % badge. I am using coveralls for the badge generation, and based on it looks like coveralls is expecting an lcov.info file. But when I look at the reporting options for pytest-cov I don't see an output option for that.

I've tried generating other types such as xml and configuring to look for this but it still looks for the lcov.info in the coverage folder. below is my current pythonapp.yml file. the current step that fails is the coveralls with it looking for ./coverage/lcov.info

Any assistance on what im doing wrong or how to fix would be greatly appreciated.

0 投票
0 回答
687 浏览

python - 使用 pytest-cov 和 subprocess.Popen 进行覆盖测试

如何使用 Popen 测试具有多个进程的应用程序,收集所有进程的覆盖率?

pytest-cov 文档仅涵盖多处理模块,而不是子进程。 https://pytest-cov.readthedocs.io/en/latest/subprocess-support.html

我的应用程序使用 Popen 来启动自身的新副本。所有孩子都被 SIGTERMed (被处理以便他们正常退出),然后由他们的父母等待。但是,覆盖率报告显示第一个子级在调用 Popen(显示为红色)之前执行了一些行,而孙子级则显示了一些行。我怀疑覆盖率报告文件可能会被多个进程覆盖。没有简单的测试用例,抱歉。

0 投票
1 回答
1546 浏览

python - 在 PyCharm 中使用 pytest-cov 插件

我想在 PyCharm 中使用 pytest 和 pytest-cov 插件,所以我--cov=package在编辑配置时添加了“附加参数”输入字段。但是,我得到了输出和错误,不知道为什么:

当我从终端运行测试时,一切正常:

0 投票
1 回答
1374 浏览

python - 通过 pytest 使用多进程处理时如何测量覆盖率?

我通过pytest. 对于我使用的覆盖范围coverage.py

在我的一个单元测试中,我运行一个函数 viamultirpocessing并且覆盖率不反映运行 via 的函数multirpocessing,但断言有效。这就是我要解决的问题。

测试看起来像这样:

要运行测试并查看覆盖率,我在 Ubuntu 中使用以下命令:

在文档中提供有关如何做以使覆盖正确地考虑多处理的指导(此处)。所以我设置了一个.coveragerc这样的:

而且sitecustomize.py看起来像这样:

尽管如此,上述贯穿的函数multiprocessing仍然没有计入覆盖范围。

我做错了什么或错过了什么?

PS似乎是一个类似的问题,但是它并没有再次解决我的问题:(

0 投票
0 回答
124 浏览

pytest - pytest 覆盖从不运行函数体

我将 vscode 与 pytest 和 pytest-cov 一起使用,以便为我的测试生成覆盖率报告。但是,无论我做什么,报告总是表明没有运行任何代码,尽管我知道测试函数调用了有问题的代码。

为了清晰起见,我的项目结构是

pytest.ini包含

测试导入和调用函数my_package

当我运行测试并查看生成的报告时,我可以看到my_package导入模块时其中的行被标记为已运行,但函数体中没有代码被标记为已执行。测试通过,所以代码正在执行。

我对此一无所知。我尝试仅通过命令行执行此操作,卸载 pytest-cov 并手动尝试,但没有任何效果。