Почему оценка становится слишком низкой при использовании покрытия в Python? - PullRequest
0 голосов
/ 25 октября 2018

Я использую код ниже для разбора 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

screenshot of temp_py.html

1 Ответ

0 голосов
/ 28 октября 2018

Вам не нужно использовать API покрытия.Просто запустите вашу программу с помощью командной строки покрытия.Тогда будет покрыт весь ваш код.

У вас низкий балл, потому что покрытие не может измерить код, который запускается до начала покрытия.Поскольку вы начинаете страховое покрытие из своей программы, все ваши программы, которые запускаются до того, как вы вызовете охват., Не будут покрываться.Также не будет охвачен ни один код в кадре, который вызывает start (), только код в функциях, вызываемых оттуда.Это объясняет все красные на вашем снимке экрана.

...