【发布时间】:2019-03-30 01:22:36
【问题描述】:
我想从代码内部捕获覆盖率。我尝试了以下一项,但出现错误。参考下面的覆盖 API 链接。 https://coverage.readthedocs.io/en/v4.5.x/api.html#api
import os
import pandas as pd
import sys
import requests
import xml.etree.ElementTree as ET
from xml.dom import minidom
import coverage
cov = coverage.Coverage()
cov.start()
#actual code
cov.stop()
cov.save()
cov.html_report(directory='covhtml')
遇到错误
CoverageException Traceback (most recent call last)
<ipython-input-15-2047badbbd57> in <module>()
48 cov.save()
49
---> 50 cov.html_report(directory='covhtml')
C:\Users\\Anaconda2\lib\site-packages\coverage\control.pyc in html_report(self, morfs, directory, ignore_errors, omit, include, extra_css, title, skip_covered)
1093 )
1094 reporter = HtmlReporter(self, self.config)
-> 1095 return reporter.report(morfs)
1096
1097 def xml_report(
C:\Users\\Anaconda2\lib\site-packages\coverage\html.pyc in report(self, morfs)
137
138 # Process all the files.
--> 139 self.report_files(self.html_file, morfs, self.config.html_dir)
140
141 if not self.all_files_nums:
C:\Users\\Anaconda2\lib\site-packages\coverage\report.pyc in report_files(self, report_fn, morfs, directory)
81
82 if not file_reporters:
---> 83 raise CoverageException("No data to report.")
84
85 self.directory = directory
CoverageException: No data to report.
【问题讨论】:
-
你能说一下你为什么要使用coverage API吗?为什么不在命令行上运行覆盖?
-
我有一个调用不同 python 脚本的 shell 脚本。因此,我觉得对于每个 python 脚本,我都可以插入覆盖代码并将输出重定向到每个 python 脚本的单独目录。这看起来比命令行选项更干净。
-
我不知道为什么这对你来说似乎更干净。覆盖率测量应该是一个可以应用于现有代码的可选过程。您可以在 shell 脚本中更改一行来实现它。
标签: python code-coverage