У меня есть старый код 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 не воспримет их как неудавшиеся тесты, поэтому я чувствую, что они должны происходит что-то более тонкое.