免责声明初学者问题!
为了回答这个问题,我的项目结构高度简化,如下所示:
Project/
|-- main.py
|-- test_main.py
在阅读了Jeff Knupp关于单元测试的博客文章并写了一系列测试之后,我想看看我的代码现在被测试覆盖了多少。所以我安装了coverage.py,以下内容让我困惑:
$coverage运行main。py(显示脚本中的打印/日志)
$覆盖报告main.py
姓名、Stmts、小姐、封面
主要的py,114,28,75%
问题是,我不从主脚本中运行单元测试,也不认为我应该这样做。在提交之前,我手动运行test_main.py的所有测试,并且知道它们并没有覆盖我所有语句的75%。阅读了覆盖留档后,我怀疑我的单元测试实现...我需要运行测试的main.py的触发器吗?
所以我在我的测试脚本上尝试了同样的方法:
$覆盖率运行test_main.py(显示所有测试的'OK'测试运行)
$覆盖报告test_main.py
姓名、Stmts、小姐、封面
主测试单元。py,8,0,100%
但这只是向我表明,在执行该脚本期间,我已经在测试语句中“命中”了100%的代码。那么,为什么覆盖率列在“增加测试覆盖率”下,如果它只是显示使用了什么代码。
我真的很想看看我的主要产品有多少。py包含在测试_main中。我很确定我缺少一些基本的概念。有人能详细说明一下吗?
在我的Ubuntu机器上运行“coverage run test_main.py;coverage report”只会给我一个关于test_main的报告。皮耶。在我的Windows计算机上,这将提供:
姓名、Stmts、小姐、封面
main.py,114, 74, 35%
主测试单元。py,8,0,100%
总数,122,74,39%
覆盖率报告仍然没有意义:
回答并结束我自己的问题——尽管我仍然不同意相当多的覆盖逻辑,但35%是准确的,感谢@Ned指出,仅在导入时就计算行数。它还包括顶级文件描述、argparser和对函数的主要引用,从而达到这个百分比。这总共是114行代码中的40行,即使我直接导入的函数本身只有9行代码。
我真的不喜欢这种报告方式,因为我没有在测试语句中使用所有导入,ARGparser没有被触及,它仍然说这些是“覆盖的”——主要是导致语义讨论,我会说这些是“看到的”或“通过的”,但实际上并没有“被测试覆盖”。
我还使用不同的文件名test\u main\u 2运行了另一个测试覆盖率。py
以完全相同的方式测试相同的功能。。。导致(35 100 100)/3=78%的覆盖率平均值,而不是之前的(35 100)/2=68%覆盖率。
但是我确实理解它是如何计算覆盖率的(平均),现在允许我以更正确的方式解释这些数字。也许这可以帮助早期初学者解释他或她自己的第一个结果。
新的一年 之前因为上家公司的经营出了问题,年前的大裁员,过了一个漫长的春节。 之后加入了新公司,然后正好赶上一个很紧急的项目,忙成狗,因此好久没更新文章了。 不过,我又回来啦! 前言 自动化测试,我们将使用karma和nightmare,内容会包括: 单元测试 e2e测试(放下一篇文章) 其实,单元测试一般用在写公共包的时候,比如通用的js函数库,通用的UI组件库。基本不太会在做业务项目的时候还使
当使用 生成覆盖率报告后,我的测试在代码覆盖率报告中显示为100%覆盖,如下所示 我尝试将测试移动到它自己的文件夹中,但仍然会得到相同的结果 实际的单元测试不应该出现在覆盖率报告中,并且扭曲了我的覆盖率。它应该只显示实际程序的覆盖范围。
我有一个Android应用程序,它由两个模块组成: 注意:我使用的是Gradle版本3.1.2。 我尝试了几种方法,下面这个确实合并了测试…但是报道并不正确: //UI测试覆盖率过滤(我们需要运行应用程序的单元测试,以便能够使用Jacoco进行过滤) //单元测试覆盖过滤 任务createTestReport(类型:JacocoReport,Dependson:['test UnitteStuni
我正在将ANT构建转换为Maven。我不用声纳。 在Maven中,Jacoco似乎并没有报告单元测试本身的覆盖率,而ANT报告。我也一直在尝试为我的Maven build获得这个,但是我没有找到任何东西。 似乎我应该添加一个
Jacoco插件在jenkins报告中显示0%的覆盖率,但当我在本地系统中运行相同的命令时,Jacoco会正确生成报告。我正在使用以下命令: mvn-s xyz/settings.xml-f xyz/xyz/pom.xml清洁安装org.jacoco 所以当我在jenkins中运行这个命令时,它会生成错误的报告。我已经检查了它在工作区目录对应的项目在詹金斯。它显示每个项目的0%覆盖率。但是当我在本