问题标签 [python-coverage]

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 回答
60 浏览

python - 给定一个对象,如何获取在运行时调用的绑定方法列表

问题来自这种情况:

我们已经建立了一个框架来测试我们项目的北向api,基于pytest。现在我们希望通过运行我们拥有的测试脚本来获得关于测试(基本上被调用)的 api 数量的覆盖率报告。

我们已经有了一个定义明确的客户端管理器,它把每个 api 都变成了一个 python 方法。例如,假设我们有一个 api GET /user,那么我们将有一个get_user将实际请求发送到服务器的方法。

我们现在正在使用 python-coverage(实际上是 pytest-cov,但它是同一件事),它将为我们提供代码覆盖率报告,并基于此,我们将有一些关于调用多少 api 的概念。但是,它不够准确和清晰。

所以关键问题是,有没有办法获取在运行时调用的绑定方法列表。

我想举一个例子来说明这个问题。

运行这两个测试后,我怎样才能得到一个报告,说在上次运行期间被调用和get_user未被调用。post_userdelete_user

一种可能的解决方案是,因为使用coverage.py 运行测试将为我们提供有关正在执行的行号和文件的足够信息,也许我可以从那里分析我需要什么。

另一种可能的解决方案是跟踪Client我定义的调用了哪个方法。实际上,我在我的特殊情况下解决了我的问题,在我的情况下,所有 apis 方法都将调用一个通用方法,call_api. 我使用inspectin 方法call_api,并且我能够获取方法名称,因为 sayget_user始终是call_api. 但是,此解决方案仅适用于这种特殊情况,不是通用解决方案。

我还查看了 module trace,它看起来很接近我想要的,但不幸的是,你必须使用它tracer(Trace instance)来运行命令或函数。

我最终想要实现的是:

0 投票
3 回答
985 浏览

python - 合并分支覆盖文件python

我在 python 中有一个多处理应用程序。我正在尝试在运行测试后获取覆盖率报告。我正在尝试合并覆盖率报告,但我无法一次性完成。

以下是我面临的问题。我的两个测试生成了 4 个覆盖文件。当我运行命令“coverage combine”时,出现以下错误:

要合并覆盖文件,我需要运行“coverage combine”命令 4 次。但我计划添加更多测试,这将使合并报告变得更加困难。

那么如何一次合并所有的覆盖率报告呢?

PS:我已经设置了配置文件如下:

而且我能够正确获得线路覆盖率的组合报告。

编辑:

这就是我运行我的应用程序以获得覆盖率的方式

上面的命令运行我的应用程序两次并生成 4 个覆盖文件。

然后我运行以下命令来合并结果:

0 投票
2 回答
8561 浏览

jenkins - Jenkins 在 docker 容器中构建并生成报告

我是 Jenkins 和 Docker 的新手,即使经过一些研究,我也找不到做这些事情的方法。

我想要 :

  • 在 docker 容器内对我的项目执行 pytest 和 python-coverage。
  • 这应该生成测试和覆盖率报告
  • 访问生成的报告并使用一些 Jenkins 插件阅读它们。

当我在本地尝试使用 Docker 时,它正在工作。我创建了一个 Dockerfile,它创建了一个包含所需库和其中的源代码的 docker 映像,然后在创建容器并运行测试时调用一个脚本。我可以看到它正在工作,因为我使用了 cat 并且能够在我的终端中看到生成的报告。

我的问题是:如何访问 Jenkins 容器内生成的报告并在之后使用插件读取它们。

编辑:所以这里有一个我正在尝试做的例子,这样你就可以有一个更好的主意。

首先,我的 Dockerfile 示例:

我的 compil.sh 包含我的测试执行

当我使用 Cloudbees 插件运行它时,这里是我的 jenkins 日志:

所以我在这里的主要目标是找到一种让詹金斯访问生成的报告的方法。另外,有没有办法在构建时查看 docker 容器内部发生了什么?例如,cat当我在本地尝试时,我试图在我的 shell 脚本中查看报告,但在 Jenkins 中我找不到查看它的方法。

0 投票
1 回答
83 浏览

nose - 鼻子测试的覆盖范围没有退出

我有一个正在运行的 Atlassian Bamboo 实例,它使用 coverage.py 脚本调用并创建一个代码覆盖率网站。

它调用:

今天,一位用户介绍了一个失败的测试,并且覆盖范围从未退出。

当服务帐户运行它时,它完成并退出

我在覆盖范围内运行鼻子测试时做错了吗?