问题标签 [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 投票
0 回答
108 浏览

python - 使用外部测试客户端时服务器代码的 Python 代码覆盖率

我有一个调用我的 python 库(api/feature1.py、api/feature2.py 等)的 python API 服务器(server.py)。我有一个在另一台机器上运行的外部客户端,它将调用一堆请求来测试响应。

我想获得 api/ 目录中所有代码的覆盖率。pytest-cov 在这里有帮助吗?如果有,我该如何使用它?我已经使用它对模拟对象等进行单元测试,我的要求似乎不同。

0 投票
1 回答
54 浏览

python - PyDevD 阻止 pytest 正确生成覆盖率

我正在处理一个不能按预期工作的代覆盖问题。最后我发现它以某种方式连接到pydevd(PyDev 调试器)包。

要重现我的问题,您可以使用以下 repo:cov-project

只有两个文件。一my_package

以及测试中的测试文件test_math.py

当我import pydevd从第一个文件中删除并运行时,python -m pytest --cov=my_package tests我得到以下输出:

是的,100% 的覆盖率符合预期。但是当我运行相同并继续导入时,pydevd我得到:

测试完全一样,唯一的变化是这个额外的导入。当然,在这个设置pydevd中是未使用的,我可以简单地删除它。但我在我的专有代码中使用它,所以我想展示如何重现我的错误的最简单方法,因为在使用pydevd. 我可以将其更改为本地导入,因为我不在我的测试中使用它,然后它会起作用,但我试图了解这里发生了什么以及为什么会pydevd阻止成功生成报告的覆盖率。

测试

  • 使用 python 3.8 和 3.9
  • 使用 pydevd 2.2.0 和 2.3.0
  • pytest 6.2.2
  • pytest-cov 2.11.1
0 投票
1 回答
594 浏览

python - 如何获取 Pytest 的代码覆盖率百分比值?

我想将我的 pytest 测试的代码覆盖率百分比值发送到外部系统。Xml 或 Html 报告对我来说不兼容,因为它们包含大量冗余信息。是否可以在某些 pytest 夹具中获取此值以在测试执行后将其发送到外部系统?

0 投票
0 回答
50 浏览

python - pytest-cov:检测何时覆盖了不应该覆盖的线

pragma: no cover如果标有 的线实际上被覆盖,有没有办法使覆盖失败?因为有时我将一条线标记为未覆盖,然后我添加了一个使其覆盖但我忘记删除 pragma 的功能,所以这个 pragma 变得混乱。

0 投票
1 回答
401 浏览

python-3.x - Pytest Cov 报告缺少模拟异常返回

我是一名网络工程师,正在尝试编写一些 Python,所以每天都在学习。我对单元测试和 Pytest 覆盖率报告有疑问。我想我理解单元测试和pytest的概念。

我有一个使用套接字进行 DNS 查找的函数

我写了一个通过良好的单元测试。我正在使用 pytest-mock 来处理用于 DNS 查找的套接字模拟。Side Effect 似乎在嘲笑 Exception 并且我将 return_value 设置为 False 并且我假设我已经断言返回 False ,测试通过了 ok 这就是为什么我假设我的测试是好的。

pytest-cov 报告显示 return False 行未被覆盖。

第 69 行是函数中的以下代码行

任何指针都将不胜感激,为什么 False 的返回没有被声明为已覆盖。就像我上面说的,我对 Python 和编码很陌生,这是我在 Stackoverflow 上的第一个问题。希望我已经解释了我的问题并提供了足够的信息以获得一些指导。

0 投票
0 回答
120 浏览

python-3.x - 有没有办法使用coveragerc从代码覆盖率测量中排除代码行?

我正在使用 pytest,使用coveragerc 来测量我的源文件的代码覆盖率,如下所示

我的coveragerc配置如下

pytest 配置

存在验证功能的测试my_func,但不适用于 main 函数下的代码行。我希望能够从代码覆盖范围中排除主函数中的所有行,因为它的功能只是初始化解析器并调用另一个函数。

0 投票
1 回答
154 浏览

python - pytest-cov 用于外部库代码覆盖的选项

目前我正在尝试为python项目实现自动化测试工具。是否可以使用 pytest-cov 模块从外部库中收集代码覆盖率?据我所知,只有coverage模块会报告外部库的代码覆盖率!

例子:

使用该命令coverage run -m --pylib pytest file.py::test_rand,我们可以从外部库(例如我们的例子中的随机模块)获取代码覆盖率。

是否可以使用 pytest-cov 来做同样的事情?

0 投票
0 回答
61 浏览

pytest - 我想知道代码本身中每个测试用例的运行时间,在数据砖中使用 pytest

我正在使用数据砖笔记本。我创建了一个包含测试用例的 test_notebook.py。我开始使用下面的代码在另一个笔记本中执行

我得到了所有测试用例的运行时间。如何在数据块笔记本本身中查看每个测试用例的运行时间?

0 投票
1 回答
612 浏览

gitlab - 将 pytest 覆盖率附加到 Gitlab CI 工件中的文件

我试图在 gitlab 阶段拆分我的 pytest,以减少运行它们所需的时间。但是,我很难获得完整的报道报告。由于我们的数据库设置方式,我无法使用 pytest-xdist 或 pytest-parallel。

在这两个阶段运行(构建 - 1 个作业,测试 - 2 个作业)之后,我去从 Gitlab 下载香蕉.xml 文件,但其中没有任何内容,即使作业说Coverage XML written to file banana.xml

在 gitlab 管道阶段拆分标记测试时,我是否遗漏了如何将总覆盖率写入工件文件?

0 投票
1 回答
22 浏览

python - 使用 pytest 对 Flask-wtfoms 进行单元测试

这是对我之前的问题的跟进。我已经构建了表单和页面,并开始使用单元测试对其进行测试。但是,当我尝试使用新的 SQLite 数据库 test.db 运行单元测试时,它无法找到其中的表,如果我使用我的主 data.db,则无法读取主页表的内容

在我的 unit_test.py 中,我有以下测试基地

在基础之后,我还有 3 个测试类:

  • 试读
  • 测试更新
  • 测试删除

它们看起来像这样:

类TestRead(TestBase):

类测试更新(TestBase):

类TestDelete(TestBase):

每次我尝试运行 pytest --cov=app 来查看覆盖率时,我都会收到以下错误:

总的来说,我非常难过,非常欢迎任何建议!