Как объединить все отчеты о случаях в один итоговый отчет?

#robotframework

#robotframework

Вопрос:

Я понимаю, что есть команда для слияния :

 rebot --merge TC002-002output.xml rerunTC002-002output.xml
 

однако у меня есть около 50 отдельных отчетов для объединения, есть ли лучший и быстрый способ их объединения.
структура выглядит следующим образом

 OutputTC001.xml .....TC020.xml
OutputNEWTC030.xml.....TC050.xml
 

Комментарии:

1. Я не понимаю, вы хотите объединить их в один отчет? Вы можете объединить несколько файлов с помощью rebot, и он поддерживает подстановочные знаки. Если вам нужен только один файл, это может быть просто один вкладыш

2. @JiriJanous я объяснил, что у меня много файлов, вводить их один за другим в командной строке неэффективно.

3. Вот где в игру вступают подстановочные знаки. Вы можете написать, например, rebot —merge TC * rerunTC*

Ответ №1:

Вы можете использовать rebot CLI API для создания скрипта, который рекурсивно собирает весь XML из заданной папки, а затем объединяет их.

 #!/usr/bin/env python
import sys
import os
from robot import rebot_cli


def collect_xmls(path, xmls):
    for filename in os.listdir(path):
        file_path = os.path.join(path,filename)
    
        if filename.endswith('.xml'):
            fullname = os.path.join(path, filename)
            xmls.append(file_path)
        
        if os.path.isdir(filename):
            collect_xmls(file_path, xmls)

root_folder = sys.argv[1]
rebot_args = []
collect_xmls(root_folder, rebot_args)
rebot_cli(rebot_args)
 

Назовите это так: python merge.py Output . Этот сценарий предполагает, что весь XML является выходным XML, но вы можете добавить дополнительные проверки имен файлов.

Комментарии:

1. команда python merge.py Вывод, является ли название Output окончательным отчетом? я могу использовать python merge.py finaloutput.xml ?

2. извините, я не очень хорошо разбираюсь в python. куда я должен вставить фактический путь к сценарию?

3. @guo Я вижу, вы приняли ответ. Ваши предыдущие комментарии все еще открыты? Вы можете передать несколько аргументов из командной строки python merge.py Output finaloutput.xml . Тогда могут быть введены любые параметры для перезагрузки rebot_args = ['--merge', 'sys.argv[2]', 'param3'] . Output в моем примере это папка, в которой можно найти xml, объединенные выходные имена будут по умолчанию log.html , report.html , output.xml .

4. я получил сообщение об ошибке, например, невозможно объединить выходные данные, содержащие разные корневые наборы. Исходный набор — ‘TC001-001’, а объединенный — ‘TC001-002’. почему?

5. @guo Смотрите мой обновленный ответ. Вы должны удалить --merge аргумент, чтобы иметь возможность комбинировать разные наборы тестов. Объединение применимо только в том случае, если вы хотите объединить результаты одного и того же набора. Подробнее: robotframework.org/robotframework/latest /…