python - 为什么在 Python 中使用覆盖率时得分太低?
问题描述
我在下面运行代码来解析 xml 文件。分数仅接近 21%。无法理解为什么?您能否建议在这里需要做些什么来提高分数。
import os
import pandas as pd
from xml.dom import minidom
import coverage
def parseXml(DF, filePath):
xmldoc = minidom.parse(filePath)
PODs= xmldoc.getElementsByTagName("POD")
for pod in PODs:
if pod.hasAttribute("name") and pod.hasAttribute("DC") and pod.hasAttribute("deferLPUpgrade"):
DF = DF.append({'PODNAME': pod.getAttribute("name"), 'DC': pod.getAttribute("DC"), 'Upgrade': pod.getAttribute("deferLPUpgrade")}, ignore_index=True)
return(DF)
if __name__ == "__main__":
cov = coverage.Coverage()
cov.start()
FILENAME = "schedule.xml"
COL_NAMES = ['PODNAME', 'DC', 'Upgrade']
DF = pd.DataFrame(columns = COL_NAMES)
DF = parseXml(DF, FILENAME)
print DF
head, tail = os.path.splitext(FILENAME)
OUT_FILE = os.path.join(head + '.csv')
DF.to_csv(OUT_FILE, sep=',', index=False)
cov.stop()
cov.save()
cov.html_report(directory='covhtml')
下面是 temp_py.html
解决方案
您不需要使用覆盖 API。只需使用覆盖命令行运行您的程序。然后将涵盖您的所有代码。
您在这里的得分很低,因为覆盖率无法衡量在覆盖率开始之前运行的代码。因为您是从程序内部开始覆盖,所以在您调用 coverage.start() 之前运行的所有程序都不会被覆盖。此外,框架中调用 start() 的任何代码都不会被覆盖,只有从那里调用的函数中的代码。这解释了屏幕截图中的所有红色。
推荐阅读
- c++ - 为什么 karatsuba 实施给出了错误的结果
- java - 这两个sql语句(JDBC)有什么区别?
- java - 如何在 MANIFEST.MF 中指定 fat jar 的内容?
- python-3.x - 在 Discord.py 中输入消息
- node.js - 在使用 express 服务器为 React 应用程序提供服务时将环境变量注入
- java - 如何在andorid studio中记住Value?
- android - 在 JNI_OnLoad 中获取上下文?
- html - Angular,在同一个html页面上多次显示一个列表,通过c#循环更新每一轮
- java - 我正在创建通知警报应用程序并且未创建通知
- javascript - 用使用该字符串作为变量名的变量替换某些字符串(javascript)