Добавить неудачный тест в JUnit XML, используя модуль junit- xml python - PullRequest
0 голосов
/ 04 августа 2020

У меня есть старый код C / Fortran, и я интегрирую его в bamboo. Код поставляется с целым набором тестов, но в конечном итоге, если тест «не проходит», некоторые детали печатаются, в противном случае он ничего не говорит. Результаты компилируются в файл, который выглядит следующим образом:

TEST_NAME,OUT,ERR
tname0,,
tname1,,
tname2,,2c3ef0 

Итак, в приведенном выше примере tname0 и tname1 прошли, но tname2 не удалось. Для файла это означает, что в первом столбце всегда есть данные, во втором столбце нет данных, а в третьем столбце есть данные только в случае сбоя теста.

Я использую junit- xml Модуль python для записи результатов теста в xml, чтобы синтаксический анализатор Bamboo JUnit мог их прочитать. Однако я не могу понять, как добавить неудачный TestCase, а документация junit- xml, похоже, не содержит примеров: https://github.com/kyrus/python-junit-xml

Это суть моего парсера:

from junit_xml import TestSuite, TestCase
import os

def main(fname, testname="DEFAULT"):

    test_cases = []
    testIdx = 0

    with open(fname, 'r') as fid:
        for line in fid.readlines():
            testIdx += 1
            line = line.split(",")

            test_cases.append((TestCase("Test" + str(testIdx), line[0],0,line[1], line[2]))

    ts = TestSuite(testname, test_cases)
    xmlstr = TestSuite.to_xml_string([ts])

    # Bamboo's default is to look for JUnit XML in directories named "**/test-reports/"
    ofile = os.path.join("test-reports", "test_" + testname + ".xml")

    with open(ofile, "w") as ofid:
        ofid.write(xmlstr)

К сожалению, он никогда не обнаруживает неудачные тесты. Он определенно помещает сообщения об ошибках в теги <system-err>, но никогда не обнаруживает никаких ошибок, и верхняя часть файла xml всегда выглядит примерно так:

<?xml version="1.0" ?>
<testsuites disabled="0" errors="0" failures="0" tests="42" time="0.0">
    <testsuite disabled="0" errors="0" failures="0" name="DEFAULT" skipped="0" tests="42" time="0">

Есть что-то, что я ' м отсутствует и / или более подробная документация? Даже если я перебью его и просто подсчитаю ошибки и выполню поиск-замену в строке xml, чтобы написать errors="1" или что-то в этом роде, Bamboo не воспримет их как неудавшиеся тесты, поэтому я чувствую, что они должны происходит что-то более тонкое.

...