我py.test
和coverage
一起使用来生成覆盖率信息,这样我就可以看到我为多少代码编写了单元测试。
coverage run --source=package_directory/sources -m py.test package_directory/tests
coverage report -m --include=package_directory
coverage html --include=package_directory
覆盖率生成良好且精细,并且实际上按照我希望的那样工作(当我创建一个新的 unittest 来测试特定函数并运行前面提到的命令时,该函数从"丢失"到"运行",正如预期的那样)。问题是,脚本中出现了我什至还没有接触过的覆盖范围,这让我认为我的单元测试并没有完全隔离,并且正在蔓延到其他函数中。我想用coverage
看看这是在哪里发生的。
因此,基本问题归结为:如果一个语句(函数)在覆盖率报告中被标记为"运行",有没有办法查看它从哪里运行(调用)?
目前还没有一种方法可以将覆盖的行跟踪回执行它们的测试。 请记住,只需导入模块即可执行模块中的顶级语句(通常为 def
和class
定义)。